list comprehension | 列表推導式 | 列表解析
阿新 • • 發佈:2019-02-12
列表解析使程式碼量更少,執行速度更快。列表解析的基本結構就是在方括號中以表示式開始,加一個for迴圈頭部。
1.帶條件的列表解析,通過末尾的if頭部來執行篩選
>>> [x+10 for x in range(10) if x%2 == 0]
[10, 12, 14, 16, 18]
2.多重解析巢狀
>>> [x+y for x in (10,20) for y in (1,2,3)]
[11, 12, 13, 21, 22, 23]
對巢狀的解析,也可分別使用if執行篩選,例如:
>>> [x+y for x in (10,20) if x>10 for y in (1,2,3) if y%2 == 1] [21, 23]
3.列表解析用於元組
>>> (x for x in range(10))
<generator object <genexpr> at 0x00000000021CE1A8>
>>> tuple(x*2 for x in range(5))
(0, 2, 4, 6, 8)
>>> tuple(x*2 for x in range(10) if x%2 == 1)
(2, 6, 10, 14, 18)
4.列表解析用於集合
>>> {x for x in range(10)} {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} >>> {x for x in range(10) if x%2 == 1} {1, 3, 5, 7, 9}
5.列表解析用於字典
>>> {x:ord(x) for x in 'abcd'}
{'a': 97, 'b': 98, 'c': 99, 'd': 100}
>>> {x:ord(x) for x in 'abcd' if ord(x)%2 == 0}
{'b': 98, 'd': 100}
6.列表解析用於檔案
[x for x in open(r'e:\pytemp\code.txt')]