前言
python里面[]表示一個列表,快速生成一個列表可以用range()函數來生成。
對列表里面的數據進行運算和操作,生成新的列表最高效快速的辦法,那就是列表生成式了。
range()
1.一個連續的數字類型列表,比如[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],可以用range生成
# coding:utf-8
# a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = range(1, 11)
print(b) # 結果 range(1, 11)
print(type(b))
print(list(b)) # 轉list
2.python3直接打印b會顯示range(1, 11)對象,並不是直接顯示應該列表,如果想顯示列表,可以用list()轉下

列表生成式
1.如果想對列表里面的數據進行運算后重新生成一個新的列表,如[11, 22, 33 ... 1010],按平常思維就是先定義一個列表c,然后for循環挨個運算,算完了再append添加到c,最后c就是新的列表了
# 對列表數平方
b = range(1, 11)
c = []
for i in b:
c.append(i*i)
print(c)
# 結果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2.接下來看看用列表生成式如何去實現
# 對列表數平方
b = range(1, 11)
c = [x*x for x in b]
print(c)
# 結果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

3.列表生成式語法是固定的,[]里面for 前面是對列表里面數據的運算操作,后面跟平常for循序一樣遍歷去讀取。運行后會自動生成新的列表
帶if判斷
1.如果想對一個列表里面的數據篩選,比如:[1, 3, -3, 4, -2, 8, -7, 6],找出大於0的數,按正常思維可以for循環挨個判斷,符合條件的放到新的列表
c = [1, 3, -3, 4, -2, 8, -7, 6]
d = []
for i in c:
if i > 0:
d.append(i) # 添加到列表d
print(d)
# 結果:[1, 3, 4, 8, 6]
2.接下來可以看看列表生成式,寫出更加簡潔優雅的代碼,快速高效!
# 提取大於0的數
c = [1, 3, -3, 4, -2, 8, -7, 6]
d = [x for x in c if x > 0]
print(d)
# 運行結果[1, 3, 4, 8, 6]
多個參數
1.前面列表生成式都只傳一個參數x,如果有兩個列表如何去運算呢?
a = [1, 2, 3, 4, 5]
b = ["a", "b", "c", "d", "e"]
如何得出c = ["a1", "b2", "c3", "d4", "e5"]
# coding:utf-8
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)
# 結果:['a1', 'b2', 'c3', 'd4', 'e5']

2.列表生成式的語法是非常優雅的,學會了可以少寫很多代碼。理解起來也並不難,多聯系幾次就能熟練掌握了。
python自動化交流 QQ群:779429633
