本文為 python 推導式 系列文,第 1 篇:
- 理解 Python 的串列推導式(List Comprehension) 👈進度
- Python 字典推導式詳解:新手指南
Python 的串列推導式(List Comprehension)是一種簡潔而強大的語法工具,用於從現有資料中快速生成新的串列。
它的設計靈感類似於 JavaScript 的 map 和 filter 方法的結合體,不僅能進行資料轉換,還能輕鬆篩選元素。
本文將詳細介紹串列推導式的用途及其靈活應用。
串列推導式的用途與基本語法
串列推導式的基本用途
串列推導式主要用於資料轉換,因此它必須基於一個資料來源,例如範圍(range)、已存在的串列等。
它的語法如下:
result = [表達式 for 元素 in 資料來源]- 表達式:定義如何轉換每個元素。
- 資料來源:用於提供資料的可迭代物件(如
range、串列等)。
範例:生成數字串列
使用串列推導式生成一個包含 1 到 5 的數字串列:
result = [i for i in range(1, 6)]
print(result) # 輸出 [1, 2, 3, 4, 5]此範例中,i 是來自 range(1, 6) 的每個數字,串列推導式將其逐一收集到新的串列中。
添加條件篩選(使用 if)
在串列推導式中,可以通過添加 if 條件篩選出符合要求的元素。
例如,只生成 1 到 5 中的奇數:
result = [i for i in range(1, 6) if i % 2 != 0]
print(result) # 輸出 [1, 3, 5]- 條件篩選:
if i % 2 != 0過濾掉偶數,只保留奇數。
串列推導式的靈活應用
結合多種操作
串列推導式不僅可以篩選元素,還可以在轉換的同時進行後續的應用。
例如,將符合條件的元素進行平方運算:
result = [i**2 for i in range(1, 6) if i % 2 != 0]
print(result) # 輸出 [1, 9, 25]這裡,i**2 將篩選出的奇數進一步轉換為平方後收集到新的串列中。
收集操作作為後續應用的基礎
串列推導式的設計還能幫助開發者將某些操作整合成一個步驟,為後續應用提供基礎。
例如:
filtered_data = [i for i in range(1, 6) if i % 2 != 0]
result = [x * 2 for x in filtered_data]
print(result) # 輸出 [2, 6, 10]此例中,我們將篩選出的奇數存放於 filtered_data,並在後續應用中進一步轉換。
串列推導式與 JavaScript 的對比
Python 的串列推導式與 JavaScript 中的 map 和 filter 方法有相似之處,但更加緊湊。
以下是一個等價範例:
JavaScript 的 map 與 filter:
const result = [1, 2, 3, 4, 5].filter(x => x % 2 !== 0).map(x => x * 2);
console.log(result); // 輸出 [2, 6, 10]Python 的串列推導式:
result = [x * 2 for x in range(1, 6) if x % 2 != 0]
print(result) # 輸出 [2, 6, 10]可以看出,Python 的語法更加簡潔,將篩選與轉換整合在一個步驟中完成。
結語
Python 的串列推導式是一種功能強大且簡潔的工具,能夠高效地進行資料轉換與篩選。
相比於其他語言的類似功能,串列推導式的語法更加直觀,適合處理簡單到中等複雜度的資料操作。
在實際應用中,通過靈活組合條件與操作,我們可以快速實現清晰、高效的數據處理邏輯。