1. 程式人生 > >list comprehension | 列表推導式 | 列表解析

list comprehension | 列表推導式 | 列表解析

列表解析使程式碼量更少,執行速度更快。列表解析的基本結構就是在方括號中以表示式開始,加一個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')]