1. 程式人生 > 程式設計 >python之列表推導式的用法

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,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,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

缺點:
​ 可讀性不高,不好排錯

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。