iT邦幫忙

1

Python 的 filter()函式:篩選出符合條件的元素

  • 分享至 

  • xImage
  •  

什麼是 filter()?

內建函式 (built-in function)
filter() 是一個內建的 Python 函式,用來過濾一個可迭代對象(例如列表、元組等)中的元素。它會根據你提供的函式來判斷每個元素是否符合條件,並返回一個新的迭代器,這個迭代器包含所有符合條件的元素。

filter() 的基本用法

newlist = filter(function, iterable)
  • function: 是一個函式,用來判斷每個元素是否符合條件。這個函式通常是一個 lambda 函式,因為 lambda 函式定義簡單,適合用於這種場景。
  • iterable: 是要過濾的可迭代對象,比如列表、元組、字符串等。
  • newlist: 返回一個迭代器,包含所有符合條件的元素。
numbers = [1, 2, 3, 4, 5]

# 篩選出偶數
even_numbers = filter(lambda x: x % 2 == 0, numbers)

# 將迭代器轉換為列表
even_numbers_list = list(even_numbers)
print(even_numbers_list)  # 输出 [2, 4]

在這個例子中:

  1. lambda x: x % 2 == 0 是一個 lambda 函式,用來判斷一個數是否為偶數。
  2. filter() 函式會對 numbers 列表中的每個元素應用這個函式。
  3. 符合條件的元素(偶數)會被保留下來,並存儲在 even_numbers 迭代器中。
  4. 最後,我們使用 list() 將迭代器轉換為列表,以便打印結果。

更進一步的例子

# 篩選出字符串長度大於 3 的元素
fruits = ['apple', 'banana', 'cherry', 'date']
long_fruits = filter(lambda x: len(x) > 3, fruits)
print(list(long_fruits))  # 输出 ['apple', 'banana', cherry']

小結

filter() 函式提供了一種方便的方法來過濾序列中的元素。
lambda 函式通常與 filter() 一起使用,用來定義篩選條件。
filter() 返回的是一個迭代器,需要使用 list() 或其他函式將其轉換為其他數據類型。

常見應用場景

  • 篩選列表、元組中的元素
  • 根據特定條件從序列中提取元素
  • 數據清洗
  • 與其他函式結合使用,例如 map()、reduce()

注意事項

filter() 返回的是一個迭代器,而不是一個列表。如果你需要一個列表,需要使用 list() 將其轉換。
lambda 函式可以定義更複雜的篩選條件,但過於複雜的邏輯可能會降低程式碼的可讀性。

總結

filter() 函式是 Python 中一個非常有用的工具,可以幫助我們高效地處理序列數據。通過掌握 filter() 的用法,可以寫出更加簡潔、優雅的 Python 程式碼。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言