python之列表推導式


1. 定義

用一行構建代碼

例題
# 構建一個1-100的列表
l1 = [i for i in range(1,101)]
print(l1)

# 輸出結果
[1,2,3,4,5,6,...100]

2. 兩種構建方式

2.1 循環模式: [變量(加工后的變量) for 變量 in iterable]

例題
1. 將10以內所有整數寫入列表
print([i for i in range(1,11)])
# 輸出結果
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

2. 將10以內所有整數的平方寫入列表。
print([i**2 for i in range(1, 11)])

3. 100以內所有的偶數寫入列表.
print([i for i in range(2, 101, 2)])

4. 從python1期到python100期寫入列表list
print([f'python{i}期' for i in range(1, 101)])
練習題
l1 = [i*i for i in range(1,11)]
print(l1)

l2 = [i for i in range(1,101) if i % 2 == 0]
print(l2)

l3 = [f'python{i}期' for i in range(1,101)]

print(l3)

2.2 篩選模式: [變量(加工后的變量) for 變量 in iterable if 條件] 增加一個判斷

例題
# 構建一個列表,要求元素大於4
print([i for i in range(11) if i > 4])

# 輸出結果:
[5, 6, 7, 8, 9, 10]
練習題
1. 10以內大於4的數

# print([i for i in range(11) if i > 4])
print([i for i in range(1,31) if i % 3 == 0])


2. 30以內可以被三整除的數。
# 過濾掉長度小於3的字符串列表,並將剩下的轉換成大寫字母
l1 = ['太白金星', 'fdsaf', 'alex', 'sb', 'ab']

l2 = [i.upper() for i in l1 if len(i) > 3]
print(l2)


3. 找到嵌套列表中名字含有兩個‘e’的所有名字(有難度)
names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
         ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
# 方法一: 普通方法
l4 = []
for i in names:
    for j in i:
        if j.count('e') >= 2:
            l4.append(j)
print(l4)

# 方法二: 列表推導式方法
print([j for i in names for j in i if j.count('e') >= 2 ])

3. 列表推導式的優缺點

優點:

​ 簡單,快捷,裝b

缺點:

​ 可讀性不高,不好排錯


免責聲明!

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



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