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 資源
透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。