Python 推導式備忘錄

用 Python 寫出簡潔易讀的清單、字典、集合和生成器推導式。

列表和集合推導式

使用語法糖循環建立內聯序列和集合。

方法/功能文法描述
List Comprehension[x * 2 for x in my_list]透過對可迭代元素應用表達式來建構新列表。
Conditional List[x for x in my_list if x > 0]應用過濾謂詞,僅保留滿足條件的元素。
Nested Loops[x + y for x in list1 for y in list2]展平嵌套操作。為每個外循環迭代運行內循環。
Set Comprehension{x for x in my_list}產生一個集合,自動套用重複資料刪除。

字典和生成器推導式

內聯產生映射和惰性評估流。

方法/功能文法描述
Dict Comprehension{k: v for k, v in pairs}構造一個內聯字典。
Conditional Dict{k: v for k, v in pairs if k is not None}構造字典,同時忽略不需要的值。
Generator Expression(x ** 2 for x in range(10))傳回一個惰性生成器迭代器物件。一次評估一個項目以節省記憶體。

互動式簡報腳本

run_all_cheat_methods.py
在編輯器中執行
# List Comprehension
[x * 2 for x in my_list]

# Conditional List
[x for x in my_list if x > 0]

# Nested Loops
[x + y for x in list1 for y in list2]

# Set Comprehension
{x for x in my_list}

# Dict Comprehension
{k: v for k, v in pairs}

# Conditional Dict
{k: v for k, v in pairs if k is not None}

# Generator Expression
(x ** 2 for x in range(10))

常見問題解答

我什麼時候應該避免使用清單推導式?

如果清單推導式過於複雜或具有多個巢狀循環,請避免使用清單推導式,因為這會降低程式碼的可讀性。

列表理解和生成器表達式有什麼區別?

列表推導式立即求值並在記憶體中建構列表,而生成器表達式則按需延遲產生項目,從而節省記憶體。

相關主題

推薦的 Python 資源

透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。