由輸出項,列表項,過濾項組成,過濾項為bool值可省略
[expr for itm in collection if condition] 列表常規(guī)推導(dǎo)
(expr for itm in collection if condition) 列表迭代推導(dǎo)
{expr for itm in collection if condition} 字典/集合推導(dǎo)
列表推導(dǎo)
num = [1, 4, -5, 10, -7, 2, 3, -1]
filtered_and_squared = [ x**2 for x in num if x > 0]
print filtered_and_squared
# [1, 16, 100, 4, 9]
由于列表推導(dǎo)時會將整個列表加載到內(nèi)存,對于比較大的對象請使用生成器,一次只加載一個列表元素到內(nèi)存。用法同上,只需要把方括號改成圓括號。使用for in來依次取出各元素
num = [1, 4, -5, 10, -7, 2, 3, -1]
new = ( x**2 for x in num if x > 0)
for i in new:
print i
# 1, 16, 100, 4, 9
集合推導(dǎo)
li = [1,2,3,4,5,6,4,3,5,12]
tmp = {i * i for i in li}
# set([1, 36, 9, 144, 16, 25, 4])
字典推導(dǎo)
li = [1,2,3,4,5,6,4,3,5,12]
tmp = {i: i * i for i in li}
# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 12: 144}
字典推導(dǎo)只是比集合推導(dǎo)多一個鍵處理