第7條 用列表推導來代替map和filter

2021-10-03 03:03:47 字數 1292 閱讀 8536

python提供了一種精簡的方法,可以根據乙份列表來生成另外乙份列表,即為列表推導

例項1:生成每個元素的平方

a =[1

,2,3

,4,5

,6,7

]squares =

[x**

2for x in a]

print

(squares)

a =[1

,2,3

,4,5

,6,7

]squares =

map(

lambda x:x**

2,a)

print

(squares)

例項2:計算列表中偶數的平方

even_squares =

[x**

2for x in a if x %2==

0]print

(even_squares)

alt =

map(

lambda x:x**2,

filter

(lambda x:x%2==

0,a)

)

字典(dict)和集合(set)也有同樣的列表推導形式

chile_ranks =

rank_dict =

print

(rank_dict)

最後指出,列表推導支援多層巢狀,但是多層巢狀難以理解,因此不要使用含有兩個以上表示式的列表推導。

例項3:將矩陣元素拉平(兩層巢狀)

matrix =[[

1,2,

3],[

4,5,

6],[

7,8,

9]]flat =

[x for row in matrix for x in row]

#每個元素取平方

squared =

[[x**

2for x in row]

for row in matrix]

print

(flat)

print

(squared)

第7條 用列表推導式來取代map和filter

核心知識點 1.列表推導式要比內建的map和filter函式清晰,因為它無需額外編寫lambda表示式。2.列表推導式可以跳過輸入列表中的某些元素,如果改用map來做,那就必須輔以filter方能實現。3.字典與集也支援推導表示式。python提供了一套精煉的寫法,可以根據乙份列表裡製作另外乙份。這...

用一條SQL語句寫出從第M條到第N條記錄的方法

1 從table 表中取出第 m 條到第 n 條的記錄 not in 版本 23 select topn m 1 4 from table 5where id notin select topm 1 id from table 67 8 從table表中取出第m到n條記錄 exists版本 910 ...

第1條 考慮用靜態工廠方法代替構造器

第1條 考慮用靜態工廠方法代替構造器 優點 1.靜態工廠方法有名稱 2.不必每次呼叫的時候都建立乙個新的物件 3.可以返回型別的任何子型別的物件 4.在建立引數化型別例項的時候,使 更加簡潔 缺點 1.類如果不含有共有的或者受保護的構造器,就不能被子類化 2.與其他的靜態方法實際上沒有任何區別 pu...