1. 程式人生 > 其它 >Python學習之列表生成式

Python學習之列表生成式

定義

列表生成式即List Comprehensions,是Python內建的可以用來建立list的生成式。

range()函式

生成一個連續的數字型別列表,比如[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],可以用range生成。

如果直接列印range物件,並不是直接顯示列表,如果想顯示列表,可以用list()轉換。

例項:

range_num = range(1, 21)
print(range_num)
print(type(range_num))
print(list(range_num))

結果:

列表生成式

如果要對列表裡的資料進行一定的運算後,生成一個新的列表,列表生成式可以簡化程式碼。

如:要求生成一個[1*1,2*2,3*3,...]的列表

使用for迴圈

temp = []
range_num = range(1, 11)
for x in range_num:
    temp.append(x*x)
print('普通for迴圈:%s' % temp)

使用列表生成式

temp = []
range_num = range(1, 11)
temp_demo = [x*x for x in range_num]
print('列表生成式:%s' % temp_demo)

帶if判斷

對運算生成的列表的內容有篩選,可以在列表生成式中使用判斷語句if...else。

但是要注意的是:if在for後面,不能帶else;if在for前面,必須要帶else。for前面的if ... else是表示式,而for後面的if是過濾條件。

例項:

1、生成僅偶數的平方的列表[4,16,36,.....]

temp_demo1 = [x*x for x in range(1, 21) if x % 2 == 0]
print(temp_demo1)

2、生成偶數的平方,奇數的平方的負數的列表[-1,4,-9,16.....]

temp_demo2 = [x*x if x % 2 == 0 else -x*x for x in range(1, 21)]
print(temp_demo2)

雙重迴圈

# 雙重迴圈
temp_demo3 = [m + n for m in 'ABC' for n in 'XYZ']
print(temp_demo3)

多個引數

例項:有兩個列表a = [1,2,3,4,5],b =['a', 'b', 'c', 'd', 'e'],然後生成列表c = ['a1','b2','c3','d4','e5']

a = [1, 2, 3, 4, 5]
b = ['a', 'b', 'c', 'd', 'e']
c = [str(x)+str(y) for x, y in zip(b, a)]
print(c)