Python 中的推導式

abce發表於2024-03-11

python中主要在列表、字典和集合中使用推導式。

推導式就是對資料集(無論是列表、字典還是集合)的操作,一般只需要幾行程式碼,可以將其收縮到一行或多行,從而提高可讀性並使程式碼緊湊。

常見的推導式有:

·列表推導式

·字典推導式

·集合推導式

·生成器推導式

列表推導式

列表推導式一種從現有列表建立新列表的更快、更簡潔的方法。與使用迴圈和函式進行的常規操作相比,列表推導式通常更快。

列表推導式的基本語法是:

output_list = [expression for variable in input_list if (condition)]

這裡:

·expression:列表生成元素表示式,可以是有返回值的函式。

·for variable in input_list:迭代 input_list 將 variable 傳入到 expression 表示式中。

·if condition:條件語句,可以過濾列表中不符合條件的值。

假設我們想從已存在的列表建立一個只包含偶數的新列表,在沒有使用推導式的時候,可能會這樣做:

list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_list = []
for x in list:
    if x % 2 == 0:
        even_list.append(x)
        print(even_list)

最終輸出的結果列表是:[2, 4, 6, 8, 10]

透過列表推導式,可以收縮程式碼:

list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_list = [x for x in list if x % 2 == 0]
print(even_list)

獲得同樣的結果列表:[2, 4, 6, 8, 10]

字典推導式

與列表推導式一樣,我們使用字典推導式從列表中建立新字典。透過字典推導式,我們可以縮減程式碼,提高程式碼的可讀性,使程式碼更加緊湊。

在開始字典推導式之前,我們首先要記住字典的基本結構和特點。也就是說,字典是使用鍵、值對對映的。

字典推導式的基本語法是:

output_dictionary = {key:value for (key, value) in list if (condition)}

假設我們要建立一個包含鍵的平方作為值的字典。如果不使用字典推導式,我們可以這樣寫:

key_list = [1, 2, 3, 4, 5, 6 ,7, 8, 9, 10]
output_dictionary = {}
for key in key_list:
    output_dictionary[key] = key**2
    print(output_dictionary)

輸出結果是:{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}

透過推導式,可以將程式碼縮減成:

key_list = [1, 2, 3, 4, 5, 6 ,7, 8, 9, 10]
output_dictionary = {key: key**2 for key in key_list}
print(output_dictionary)

也可以在推導式中加上判斷條件:

key_list = [1, 2, 3, 4, 5, 6 ,7, 8, 9, 10]
output_dictionary = { key: key**2 for key in key_list if key % 2 == 0}
print(output_dictionary)

集合推導式

集合推導式與列表推導式類似。

集合推導式的基本語法是:

output_set = {expression for variable in input_list if (condition)}

假設我們要建立一個集合,消除列表中的重複值。

set_list = ['A', 'S', 'P', 'A', 'R', 'A', 'G', 'U', 'S']
output_set = set()
for element in set_list:
    output_set.add(element)
print(output_set)

透過字典推導式就可以寫成這樣:

set_list = ['A', 'S', 'P', 'A', 'R', 'A', 'G', 'U', 'S']
output_set = {element for element in set_list}
print(output_set)

生成器推導式

生成器推導式與列表推導式類似,但使用圓括號。與列表推導式相比,生成器推導式的效率要高得多,因為它們為每個值分配記憶體,而不是為整個列表分配記憶體。

生成器推導式的基本語法是:

output_generator = (expression for variable in input_list if (condition))

讓我們來看一個生成器推導式的示例。在這裡,我們要從輸入列表中建立一個偶數生成器。

input_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
output_generator = (var for var in input_list if var % 2 == 0)
print(output_generator)
print(type(output_generator))
for v in output_generator:
    print(v)

輸出結果:

<generator object <genexpr> at 0x0000013D83CF3AE0>
<class 'generator'>
2
4
6
8
10

相關文章