第一課課後作業 列表

2021-06-26 09:50:12 字數 2978 閱讀 7404

測試題:0. 注意,這道題跟上節課的那道題有點兒不同,回答完請上機實驗或參***。

>>> old = [1, 2, 3, 4, 5]

>>> new = old

>>> old = [6]

>>> print(new)

如果不上機操作,你覺得會列印什麼內容?

1. 請問如何將下邊這個列表的'小甲魚'修改為'小魷魚'?

list1 = [1, [1, 2, ['小甲魚']], 3, 5,8, 13, 18]

2. 要對乙個列表進行順序排序,請問使用什麼方法?

3. 要對乙個列表進行逆序排序,請問使用什麼方法?

() 和 clear()

5. 你有聽說過列表推導式或列表解析嗎?

沒聽過?!沒關係,我們現場來學習一下吧,看表示式:

>>> [ i*i for i in range(10) ]

你覺得會列印什麼內容?

>>> [i*i for i in range(10)]

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

居然分別列印了0到9各個數的平方,然後還放在列表裡邊了有木有?!

列表推導式(list comprehensions)也叫列表解析,靈感取自函式式程式語言 haskell。ta 是

乙個非常有用和靈活的工具,可以用來動態的建立列表,語法如:

[有關a的表示式 for a inb]

>> list1 = [x**2 for x inrange(10)]

>>> list1

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

相當於list1 =

for x in range(10):

問題:請先在 idle 中獲得下邊列表的結果,並按照上方例子把列表推導式還原出來。

>>> list1 = [(x, y) for x inrange(10) for y in range(10) if x%2==0 if y%2!=0]

6. 活學活用:請使用列表推導式補充被小甲魚不小心塗掉的部分

測試題答案:

0. 注意,這道題跟上節課的那道題有點兒不同,回答完請上機實驗或參***。

>>> old = [1, 2, 3, 4, 5]

>>> new = old

>>> old = [6]

>>> print(new)

會列印:[1, 2, 3, 4, 5]

如有不理解的朋友請看上一講課後作業的詳細答案。

1. 請問如何將下邊這個列表的'小甲魚'修改為'小魷魚'?

list1 = [1, [1, 2, ['小甲魚']], 3, 5,8, 13, 18]

list1[1][2][0] = '小魷魚'

2. 要對乙個列表進行順序排序,請問使用什麼方法?

>>> 列表名.sort()

3. 要對乙個列表進行逆序排序,請問使用什麼方法?

>>> 列表名.sort()

>>> 列表名.reverse()

>> 列表名.sort(reverse=true)

() 和 clear()

copy() 方法跟使用切片拷貝是一樣的:

>>> list2 = list1.copy()

>>> list2

[1, [1, 2, ['小甲魚']], 3, 5, 8, 13,18]

clear() 方法用於清空列表的元素,但要注意,清空完後列表仍然還在哦,只是變成乙個空列表

。>>> list2.clear()

>>> list2

5. 問題:請先在 idle 中獲得下邊列表的結果,並按照上方例子把列表推導式還原出來。

>>> list1 = [(x, y) for x inrange(10) for y in range(10) if x%2==0 if y%2!=0]

list1 =

for x in ragne(10):

for y in range(10):

if x%2 == 0:

if y%2 != 0:

6. 活學活用:請使用列表推導式補充被小甲魚不小心塗掉的部分

>>> list3 = [name + ':' +slogan[2:] for slogan in list1 for name in list2 if slogan[0] ==

name[0]]

列表推導式(

list comprehension

)是利用其他列表建立新列表(類似於數學術語中的集合推導

式)的一種方法。它的工作方式類似於

for迴圈,也很簡單:

in [39]: [x*x for x in range(10)]

out[39]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

如果只想列印出那些能被

3整除的平方數,只需要通過新增乙個

if部分在推導式中就可以完

成:in [41]: [x*x for x in range(10) if x % 3 == 0]

out[41]: [0, 9, 36, 81]

也可以增加更多的

for語句的部分:

in [42]: [(x,y) for x in range(3) for y in range(3)]

out[42]: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2,1), (2, 2)]

in [43]: [[x,y] for x in range(2) for y in range(2)]

out[43]: [[0, 0], [0, 1], [1, 0], [1, 1]]

Oracle第一課課後作業

節省空間,主要是在三正規化節省空間,表中只有別的表的乙個外來鍵,沒有多餘的字段 建立使用者 create user user test identified by user test 授予許可權 grant connect to user test grant resource to user te...

Oracle第十一課課後作業

給dept表建行級觸發器,操作dept表的同時更新它的副表dept2 增刪改查時兩張表資料同步 建立dept2為dept的副表 create table dept2 as select from dept 建立觸發器,在修改dept表時兩張表資料同步 create or replace trigge...

小甲魚41課課後作業

3.請問以下 存在什麼問題?class test def init self,x,y return x yinit方法只能return none 程式設計題 0.小李做事常常丟三落四的,寫 也是一樣,常常開啟檔案又忘記關閉。你能不能寫乙個fileobject類,給檔案物件進行包裝,從而確認在刪除物件...