Python列表推導式的使用方法-創(chuàng)新互聯

創(chuàng)新互聯www.cdcxhl.cn八線動態(tài)BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!

站在用戶的角度思考問題,與客戶深入溝通,找到嘉魚網站設計與嘉魚網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網站制作、成都做網站、企業(yè)官網、英文網站、手機端網站、網站推廣、申請域名、虛擬主機、企業(yè)郵箱。業(yè)務覆蓋嘉魚地區(qū)。

這篇文章將為大家詳細講解有關Python列表推導式的使用方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

for 表達式(列表推導式)用于利用其他區(qū)間、元組、列表等可迭代對象創(chuàng)建新的列表。

for 表達式的語法格式如下:

[表達式 for 循環(huán)計數器 in 可迭代對象]

從上面的語法格式可以看出,for 表達式與普通 for 循環(huán)的區(qū)別有以下兩點:

在 for 關鍵字之前定義一個表達式,該表達式通常會包含循環(huán)計數器。

for 表達式沒有循環(huán)體,因此不需要冒號。

for 表達式當然也是有循環(huán)的,它同樣會對可迭代對象進行循環(huán),可迭代對象包含幾個對象,該循環(huán)就對 for 之前的“表達式”執(zhí)行幾次(相當于 for 之前的表達式就是循環(huán)體),并將每次執(zhí)行的值收集起來作為新的列表元素。

for 表達式最終返回的是列表,因此 for 表達式也被稱為列表推導式。

例如如下代碼(程序一):

a_range = range(10)
# 對a_range執(zhí)行for表達式
a_list = [x * x for x in a_range]
# a_list集合包含10個元素
print(a_list)

上面粗體字代碼將會對 a_range 執(zhí)行迭代,由于 a_range 相當于包含 10 個元素,因此程序生成的 a_list 同樣包含 10 個元素,每個元素都是 a_range 中每個元素的平方(由表達式 x*x 控制)。

運行上面代碼,可以看到如下輸出結果:

[0 , 1 , 4 , 9 , 16 , 25 , 36 , 49 , 64, 81]

還可以在 for 表達式后面添加 if 條件,這樣 for 表達式將只迭代那些符合條件的元素。例如如下代碼:

b_list = [x * x for x in a_range if x % 2 == 0]
# a_list集合包含5個元素
print(b_list)

第一行代碼與程序一中第 3 行代碼大致相同,只是為 for 表達式增加了 if 條件,這樣程序只處理 range 區(qū)間的偶數,因此程序生成的 b_list 只包含 5 個元素。

運行上面代碼,可以看到如下輸出結果:

[0 ,4 , 16, 36, 64]

如果將 for 表達式的方括號改為圓括號,for 表達式將不再生成列表,而是生成一個生成器(generator),該生成器同樣可使用 for 循環(huán)選代。

對于使用圓括號的 for 表達式,它最終返回的是生成器,因此這種 for 表達式也被稱為生成器推導式。例如如下代碼:

# 使用for表達式創(chuàng)建生成器
c_generator = (x * x for x in a_range if x % 2 == 0)
# 使用for循環(huán)迭代生成器
for i in c_generator:
    print(i, end='\t')
print()

程序中,第 2 行代碼只是將 for 表達式的方括號改為圓括號,因此這行代碼將會創(chuàng)建一個 generator 對象,接下來程序使用 for 循環(huán)遍歷了該 generator 對象。運行上面程序,得到如下輸出結果:

0 4 16 36 64

在前面看到的 for 表達式都只有一個循環(huán),實際上 for 表達式可使用多個循環(huán),就像嵌套循環(huán)一樣。例如如下代碼:

d_list = [(x, y) for x in range(5) for y in range(4)]
# d_list列表包含20個元素
print(d_list)

上面代碼中 x 是遍歷 range(5) 的計數器,因此該 x 可迭代 5 次;y 是遍歷 range(4) 的計數器,因此該 y 可迭代 4 次。因此,該(x,y)表達式一共會迭代 20 次。

運行上面代碼,可以看到如下輸出結果:

[(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3), (3, 0), (3, 1), (3, 2), (3, 3), (4, 0), (4, 1), (4, 2), (4, 3)]

上面的 for 表達式相當于如下嵌套循環(huán):

dd_list = []
for x in range(5):
    for y in range(4):
        dd_list.append((x, y))

當然,也支持類似于三層嵌套的 for 表達式,例如如下代碼:

e_list = [[x, y, z] for x in range(5) for y in range(4) for z in range(6)]
# e_list列表包含120個元素
print(e_list)

對于包含多個循環(huán)的 for 表達式,同樣可指定 if 條件。假如我們有一個需求:程序要將兩個列表中的數值按“能否整除”的關系配對在一起。比如 src_a 列表中包含 30,src_b 列表中包含 5,其中 30 可以整除 5,那么就將 30 和 5 配對在一起。對于上面的需求使用 for 表達式來實現非常簡單,例如如下代碼:

src_a = [30, 12, 66, 34, 39, 78, 36, 57, 121]
src_b = [3, 5, 7, 11]
# 只要y能整除x,就將它們配對在一起
result = [(x, y) for x in src_b for y in src_a if y % x == 0]
print(result)

運行上面代碼,可以看到如下輸出結果:

[(3, 30), (3, 12), (3, 66), (3, 39), (3, 78), (3, 36), (3, 57), (5, 30), (11, 66), (11, 121)]

關于Python列表推導式的使用方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

文章題目:Python列表推導式的使用方法-創(chuàng)新互聯
標題來源:http://www.muchs.cn/article32/dpjjsc.html

成都網站建設公司_創(chuàng)新互聯,為您提供關鍵詞優(yōu)化、商城網站、建站公司營銷型網站建設、App設計服務器托管

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

外貿網站建設