新聞中心
Python 中的列表推導(dǎo)是一種簡單而緊湊的語法,用于從字符串或其他列表創(chuàng)建列表。 通過對現(xiàn)有列表中的每個項目執(zhí)行操作來創(chuàng)建新列表是一種非常簡潔的方法。 列表推導(dǎo)比使用 for循環(huán)處理列表要快得多。

作為一家“創(chuàng)意+整合+營銷”的成都網(wǎng)站建設(shè)機構(gòu),我們在業(yè)內(nèi)良好的客戶口碑。成都創(chuàng)新互聯(lián)提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、創(chuàng)意表現(xiàn)、網(wǎng)頁制作、系統(tǒng)開發(fā)以及后續(xù)網(wǎng)站營銷運營等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營模式與有效的網(wǎng)絡(luò)營銷方法,創(chuàng)造更大的價值。
List Comprehension Syntax:
[expression for element in iterable if condition]
按照上面的語法,列表推導(dǎo)語法包含三個部分:一個表達(dá)式,一個或多個用于循環(huán)的,以及可選的一個或多個 if 條件。 列表推導(dǎo)必須在方括號[]內(nèi)。 第一個表達(dá)式的結(jié)果將存儲在新列表中。for循環(huán)用于迭代可選地包含 if 條件的可迭代對象。
假設(shè)我們想找到從 0 到 20 的偶數(shù),那么我們可以用一個來循環(huán),如下所示:
Example: Create List of Even Numbers without List Comprehension
even_nums = []
for x in range(21):
if x%2 == 0:
even_nums.append(x)
print(even_nums) Output
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20] 使用下面顯示的列表推導(dǎo)技術(shù)可以很容易地獲得相同的結(jié)果。
Example: Create List of Even Numbers with List Comprehension
even_nums = [x for x in range(21) if x%2 == 0]
print(even_nums) Output
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20] 在上例中,[x for x in range(21) if x%2 == 0]使用列表推導(dǎo)返回一個新列表。 首先,它執(zhí)行 for循環(huán)for x in range(21) if x%2 == 0。如果指定條件if x%2 == 0評估為真,將返回元素x。 如果條件評估為真,那么 for循環(huán)之前的表達(dá)式將被執(zhí)行并存儲在新列表中。在這里,表達(dá)式x只是將x的值存儲到一個新的列表中。
列表推導(dǎo)也適用于字符串列表。下面創(chuàng)建一個包含“a”的新字符串列表。
Example: List Comprehension with String List
names = ['Steve', 'Bill', 'Ram', 'Mohan', 'Abdul']
names2 = [s for s in names if 'a' in s]
print(names2) Output
['Ram', 'Mohan'] 上圖中,如果一個元素包含字符“a”,表達(dá)式if 'a' in s返回真。因此,新列表將包括包含“a”的名稱。
以下示例使用列表推導(dǎo)來構(gòu)建 1 到 10 之間的數(shù)字的正方形列表。
Example: List Comprehension
squares = [x*x for x in range(11)]
print(squares) Output
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 上圖,在沒有任何 if 條件的情況下執(zhí)行 for循環(huán)for x in range(11)。for循環(huán)之前的表達(dá)式x*x存儲新列表中元素的平方。
使用嵌套循環(huán)的列表推導(dǎo)
列表推導(dǎo)表達(dá)式中可以使用嵌套循環(huán)。在下面的示例中,來自兩個列表的元組形式的所有項目組合都被添加到第三個列表對象中。
Example: List Comprehension
nums1 = [1, 2, 3]
nums2 = [4, 5, 6]
nums=[(x,y) for x in nums1 for y in nums2]
print(nums) Output
[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)] 具有多個 if 條件的列表推導(dǎo)
我們可以用嵌套的 if 條件來理解列表。
Example: List Comprehension
nums = [x for x in range(21) if x%2==0 if x%5==0]
print(nums) Output
[0, 10, 20] 用 if-else條件列出理解
以下示例演示了 if..else 用列表推導(dǎo)循環(huán)。
Example: List Comprehension
odd_even_list = ["Even" if i%2==0 else "Odd" for i in range(5)]
print(odd_even_list)
odd_even_list = [str(i) + '=Even' if i%2==0 else str(i) + "=Odd" for i in range(5)]
print(odd_even_list) Output
['Even', 'Odd', 'Even', 'Odd', 'Even']
['0=Even', '1=Odd', '2=Even', '3=Odd', '4=Even'] 使用列表推導(dǎo)展平列表
列表推導(dǎo)的應(yīng)用之一是將包含多個列表的列表展平為單個列表。
Example: List Comprehension
matrix=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flatList=[num for row in matrix for num in row]
print(flatList) Output
[1, 2, 3, 4, 5, 6, 7, 8, 9] 了解更多關(guān)于如何在 Python 中展平列表。****
本文題目:python列表推導(dǎo)
文章轉(zhuǎn)載:http://m.fisionsoft.com.cn/article/coscjop.html


咨詢
建站咨詢
