Python 程序設(shè)計(jì)入門(008)—— 列表的操作(3):列表推導(dǎo)式
使用列表推導(dǎo)式可以快速生成一個(gè)列表?;蛘吒鶕?jù)某個(gè)列表生成滿足指定需求的列表。列表推導(dǎo)式包含在方括號內(nèi),它由一個(gè)表達(dá)式、一個(gè)或多個(gè) for 循環(huán)和一個(gè)用于過濾生成的列表的可選條件組成。
列表推導(dǎo)式的語法格式如下:
new_list = [expression(item) for item in iterable if condition]
相當(dāng)于如下語句:
new_list = []
for item in iterable:
if condition:
new_list.append(expression(item))
說明:
(1)Expressinon:表達(dá)式,用于計(jì)算列表的元素。
(2)item:循環(huán)變量。
(3)iterable:可迭代對象。
(4)condition:條件。
一、基本應(yīng)用舉例
1、生成 1 到 10 組成的列表
num1 = [x for x in range(1,11)]
print(num1)
運(yùn)行結(jié)果為:
===================== RESTART: C:\Python\Python38\First.py =====================
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
上面的例子表示:按照 int 類型的長度分配兩塊連續(xù)區(qū)域,強(qiáng)制轉(zhuǎn)換為 int 類型的指針,并把首地址賦予指針變量 ps。
2、生成 2-20 之間的偶數(shù)組成的列表
num1 = [2*x for x in range(1,11)]
print(num1)
運(yùn)行結(jié)果為:
===================== RESTART: C:\Python\Python38\First.py =====================
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
3、生成 1-19 之間的奇數(shù)組成的列表
num1 = [2*x-1 for x in range(1,11)]
print(num1)
運(yùn)行結(jié)果為:
===================== RESTART: C:\Python\Python38\First.py =====================
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
4、生成嵌套列表
num1 = [[x,x**2,x**3] for x in range(1,11)]
print(num1)
運(yùn)行結(jié)果為:
===================== RESTART: C:\Python\Python38\First.py =====================
[[1, 1, 1], [2, 4, 8], [3, 9, 27], [4, 16, 64], [5, 25, 125], [6, 36, 216], [7, 49, 343], [8, 64, 512], [9, 81, 729], [10, 100, 1000]]
二、添加條件
1、生成 10 偶數(shù)組成的列表
num1 = [x for x in range(1,11) if x%2==0]
print(num1)
運(yùn)行結(jié)果為:
===================== RESTART: C:\Python\Python38\First.py =====================
[2, 4, 6, 8, 10]
2、生成 10 奇數(shù)組成的列表
num1 = [x for x in range(1,11) if x%2==1]
print(num1)
運(yùn)行結(jié)果為:
===================== RESTART: C:\Python\Python38\First.py =====================
[1, 3, 5, 7, 9]
3、生成 1-3 與 7-10 之間的整數(shù)組成的列表
num1 = [x for x in range(1,11) if x>=7 or x<=3]
print(num1)
運(yùn)行結(jié)果為:
===================== RESTART: C:\Python\Python38\First.py =====================
[1, 2, 3, 7, 8, 9, 10]
4、如果 x 的值介于 2 和 5 之間,則列表推導(dǎo)式返回 2*x,否則返回 x**2
num1 = [2*x if x>=2 and x<=5 else x**2 for x in range(1,11)]
print(num1)
運(yùn)行結(jié)果為:
===================== RESTART: C:\Python\Python38\First.py =====================
[1, 4, 6, 8, 10, 36, 49, 64, 81, 100]
三、使用 zip() 函數(shù)組合多個(gè)列表
與 zip 函數(shù)一起使用的列表推導(dǎo)返回一個(gè)元組列表,其中第 n 個(gè)元組包含每個(gè)列表的第 n 個(gè)元素。
例1:
cities = ['Rome', 'Warsaw', 'London']
countries = ['Italy', 'Poland', 'United Kingdom']
list1 = [(city, country) for city, country in zip(cities, countries)]
print(list1)
運(yùn)行結(jié)果為:
===================== RESTART: C:\Python\Python38\First.py =====================
[('Rome', 'Italy'), ('Warsaw', 'Poland'), ('London', 'United Kingdom')]
例2:文章來源:http://www.zghlxwxcb.cn/news/detail-628430.html
a = [2, 3, 4, 5]
b = [12, 13, 14, 15]
list1 = [x+y for x,y in zip(a,b)]
print(list1)
運(yùn)行結(jié)果為:
===================== RESTART: C:\Python\Python38\First.py =====================
[14, 16, 18, 20]
例3:文章來源地址http://www.zghlxwxcb.cn/news/detail-628430.html
a = [2, 3, 4, 5]
b = [12, 13, 14, 15]
c = [22, 23, 24, 25]
list1 = [2*x+3*y+z for x,y,z in zip(a,b,c)]
print(list1)
運(yùn)行結(jié)果為:
===================== RESTART: C:\Python\Python38\First.py =====================
[62, 68, 74, 80]
四、嵌套列表推導(dǎo)式
list1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
list2 = [[x*2 for x in row] for row in list1]
print(list2)
運(yùn)行結(jié)果為:
===================== RESTART: C:\Python\Python38\First.py =====================
[[2, 4, 6], [8, 10, 12], [14, 16, 18]]
到了這里,關(guān)于Python 程序設(shè)計(jì)入門(008)—— 列表的操作(3):列表推導(dǎo)式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!