Logo

新人日誌

首頁關於我部落格

新人日誌

Logo

網站會不定期發佈技術筆記、職場心得相關的內容,歡迎關注本站!

網站
首頁關於我部落格
部落格
分類系列文

© 新人日誌. All rights reserved. 2020-present.

理解 Python 的串列推導式(List Comprehension)

最後更新:2025年1月23日Python

本文為 python 推導式 系列文,第 1 篇:

  1. 理解 Python 的串列推導式(List Comprehension) 👈進度
  2. 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 的串列推導式是一種功能強大且簡潔的工具,能夠高效地進行資料轉換與篩選。

相比於其他語言的類似功能,串列推導式的語法更加直觀,適合處理簡單到中等複雜度的資料操作。

在實際應用中,通過靈活組合條件與操作,我們可以快速實現清晰、高效的數據處理邏輯。

目前還沒有留言,成為第一個留言的人吧!

發表留言

留言將在審核後顯示。

Python

目錄

  • 串列推導式的用途與基本語法
  • 串列推導式的基本用途
  • 範例:生成數字串列
  • 添加條件篩選(使用 if)
  • 串列推導式的靈活應用
  • 結合多種操作
  • 收集操作作為後續應用的基礎
  • 串列推導式與 JavaScript 的對比
  • JavaScript 的 map 與 filter:
  • Python 的串列推導式:
  • 結語