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...