如何在 Python 中使用列表理解
了解如何在 Python 中使用列表推導式。編寫簡潔的循環,應用條件過濾器,並使用乾淨的視覺語法建立矩陣。
概述
列表理解是 Python 最受歡迎和最具標誌性的功能之一。它提供了一種簡潔、富有表現力和高度可讀的語法,可以從現有的可迭代物件(例如列表、範圍或元組)建立新列表。它允許您用一行程式碼替換多行“for”循環並列出初始化語句。
列表理解的基本語法是“[可迭代項的表達式]”。在幕後,該語法在 Python 的實現中進行了高度優化,使其運行速度比使用「.append()」附加項目的標準「for」循環更快。它非常適合應用數學變換或修改元素。
清單推導式也支援使用「if」子句進行條件過濾,讓您選擇性地包含元素(例如,「[x for x in data if x % 2 == 0]」)。雖然清單推導式非常強大,但應謹慎使用:如果您的推導式非常複雜或嵌套,最好編寫標準循環以保持可讀性。
程式碼和執行輸出
該腳本演示了基本的列表理解、條件過濾以及字串值轉換。
list_comprehensions.py
在編輯器中嘗試# 1. Traditional for-loop way to build a list
squares_loop = []
for x in range(1, 6):
squares_loop.append(x**2)
print("Loop squares:", squares_loop)
# 2. List comprehension way (same outcome)
squares_comp = [x**2 for x in range(1, 6)]
print("Comp squares:", squares_comp)
# 3. Filtering elements with an 'if' clause (even numbers only)
evens = [n for n in range(1, 11) if n % 2 == 0]
print("Even numbers:", evens)
# 4. String modifications using comprehensions
names = ["alice", "bob", "charlie"]
caps = [name.capitalize() for name in names]
print("Capitalized:", caps)端子輸出
Loop squares: [1, 4, 9, 16, 25]
Comp squares: [1, 4, 9, 16, 25]
Even numbers: [2, 4, 6, 8, 10]
Capitalized: ['Alice', 'Bob', 'Charlie']逐步實施
- 確定要在清單中捕獲的循環體和表達式。
- 將推導式建構為 [iterable 中 item 的表達式]。
- 在末端附加一個可選的 if 條件來動態過濾元素。
常見問題解答
我可以在列表理解中使用 if-else 語句嗎?
是的!將 if-else 子句放在 for 迴圈之前:[x if x > 0 else 0 for x in data]。
列表推導式和生成器表達式有什麼不同?
列表推導式使用方括號並立即傳回完整列表。生成器表達式使用括號並返回惰性生成器對象,這可以為大型資料集節省記憶體。
相關主題
推薦的 Python 資源
透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。