python筆記21-列表生成式


前言

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM