Python中的清單推導式是一種方便快速的語法,可以快速地產生清單。它的語法形式類似數學中的集合推導式,語意也相似,因而易於理解和使用。以下將詳細介紹Python中的列表推導式。
一、基本語法結構
列表推導式的基本語法結構為:
[ expression for item in iterable if condition ]
#其中,expression表示參與列表產生的表達式,可包含變數、函數呼叫等操作;item表示生成列表中的元素;iterable表示可迭代的對象,例如列表、元組、集合等;if condition表示對條件的篩選,可以省略。
二、常見使用場景
1.產生整數列表
例如,產生1~10之間的整數列表可以使用以下程式碼:
num_list = [i for i in range(1,11)] print(num_list)
輸出結果為:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
此處使用range()函數產生一個1~10之間的整數迭代器,然後透過列表推導式將其中的元素逐一提取,並構成一個列表。
2.產生平方列表
例如,產生1~10之間的整數的平方列表可以使用以下程式碼:
square_list = [i**2 for i in range(1,11)] print(square_list)
輸出結果為:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
3.過濾列表元素
例如,從一個字串列表中篩選出長度超過3的字串可以使用以下程式碼:
str_list = ['hello', 'world', 'python', 'list', 'comprehension', 'study'] new_list = [s for s in str_list if len(s) > 3] print(new_list)
輸出結果為:
['hello', 'world', 'python', 'comprehension', 'study']
此處使用if語句對元素進行條件篩選,只有長度大於3的字串才能進入新的清單。
4.多重迴圈
例如,產生1~9之間的所有乘積可以使用以下程式碼:
mul_list = [i*j for i in range(1,4) for j in range(1,4)] print(mul_list)
輸出結果為:
[1, 2, 3, 2, 4, 6, 3, 6, 9]
此處透過兩層循環實現了乘法操作,即i和j分別取1、2、3時,它們的乘積構成了列表中的元素。
三、嵌套列表推導式
有時候需要在產生一個列表時,對其中的元素進行更複雜的操作,此時就可以使用嵌套列表推導式。嵌套列表推導式即在列表推導式的基礎上再次嵌套列表推導式,其語法結構為:
[ expression for item in iterable if condition for sub_item in sub_iterable if sub_condition ]
#其中,expression、item、iterable和condition的含義與上述基本語法結構中一致;sub_item表示在item遍歷的基礎上再次遍歷的元素;sub_iterable表示sub_item的迭代對象;sub_condition表示對sub_item的篩選條件。
以下是幾個常見的嵌套列表推導式的範例。
1.產生平方矩陣
例如,產生3×3的平方矩陣可以使用下列程式碼:
matrix = [[i*j for j in range(1,4)] for i in range(1,4)] for row in matrix: print(row)
輸出結果為:
[1, 2, 3] [2, 4, 6] [3, 6, 9]
此處使用兩層嵌套推導式,外層推導式產生三個列表,內層推導式產生每個列表中的三個元素,從而構成了一個3×3的平方矩陣。
2.篩選奇偶數
例如,從一個整數列表中篩選出奇數和偶數分別構成兩個列表可以使用以下程式碼:
num_list = [1,2,3,4,5,6,7,8,9,10] odd_list = [i for i in num_list if i%2 == 1] even_list = [i for i in num_list if i%2 == 0] print(odd_list) print(even_list)
輸出結果分別為:
[1, 3, 5, 7, 9] [2, 4, 6, 8, 10]
此處使用兩個嵌套的列表推導式,分別篩選出原始列表中的奇數和偶數元素。
四、總結
列表推導式是Python語言的一項優秀的語法特性之一,它可以方便地產生各種類型的列表,同時也支援嵌套等高級特性。在實際程式設計中,學習和使用清單推導式可以大幅提高程式碼的編寫效率和可讀性。
以上是Python中的列表推導式詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!