1. 程式人生 > 實用技巧 >python之列表生成式

python之列表生成式

生成一個[1+1,2+2,3+3,4+4,……,10+10]的列表:

方法一

l1 = []
for i in range(1,11):
    l1.append(i+i)
print(l1)

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

方法二

l2 = [x+x for x in range(1,11)]
print(l2)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

方法二中只需要一行程式碼就實現了方法一中的功能,方法二採用的便是列表生成式;

寫列表生成式時,需要把表示式:x+x寫在最前面,後面再跟for迴圈;

for迴圈後面還可以加上if判斷

l3 = [x+x for x in range(1,11) if x % 2 == 0]
print(l3)
[4, 8, 12, 16, 20]

for迴圈中還可以再巢狀for迴圈

l4 = [x+y for x in '123' for y in 'abc' ]
print(l4)
['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']

一個for迴圈中用兩個變數生成列表

d = {'x': '1','y': '2','z': '3'}
l5 = [k + '=' + v for k,v in
d.items()] print(l5)
['x=1', 'y=2', 'z=3']

列表生成式中if……else的用法

1、for後面加if是一個篩選條件,不能帶else

2、if在for前面必須加else,因為for前面是一個表示式

(在列表生成式中,for前面的if……else是表示式,for後面的if是過濾條件,不能帶else)

l6 = [x if x % 2 == 0 else -x for x in range(1,11)]
print(l6)
[-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]