Python學習之列表生成式
阿新 • • 發佈:2021-06-25
定義
列表生成式即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)