當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python filter()用法及代碼示例


在本教程中,我們將借助示例了解 Python filter() 函數。

filter() 函數從函數返回 True 的可迭代(列表、元組等)中提取元素。

示例

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# returns True if number is even
def check_even(number):
    if number % 2 == 0:
          return True  

    return False

# Extract elements from the numbers list for which check_even() returns True
even_numbers_iterator = filter(check_even, numbers)

# converting to list
even_numbers = list(even_numbers_iterator)

print(even_numbers)

# Output: [2, 4, 6, 8, 10]

filter() 語法

它的語法是:

filter(function, iterable)

filter() 參數

filter() 函數有兩個參數:

  • function- 一個函數
  • iterable- 一個可迭代的,列表,元組等等。

返回:

filter() 函數返回一個迭代器。

注意:您可以輕鬆地將迭代器轉換為列表、元組、字符串等序列。

示例 1:filter() 的工作

letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels(letter):
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter(filter_vowels, letters)

# converting to tuple
vowels = tuple(filtered_vowels)
print(vowels)

輸出

('a', 'e', 'i', 'o')

這裏,filter() 函數僅從letters 列表中提取元音字母。以下是這段代碼的工作原理:

  • letters 列表的每個元素都傳遞給filter_vowels() 函數。
  • 如果 filter_vowels() 返回 True ,則提取該元素,否則將其過濾掉。

注意:也可以使用循環過濾列表,但是,使用filter()函數更幹淨。

示例 2:在 filter() 內部使用 Lambda 函數

numbers = [1, 2, 3, 4, 5, 6, 7]

# the lambda function returns True for even numbers 
even_numbers_iterator = filter(lambda x: (x%2 == 0), numbers)

# converting to list
even_numbers = list(even_numbers_iterator)

print(even_numbers)

輸出

[2, 4, 6]

在這裏,我們在 filter() 中直接傳遞了一個 lambda function

我們的 lambda 函數為偶數返回 True。因此,filter() 函數返回一個僅包含偶數的迭代器。

示例 3:在 filter() 中使用 None 作為函數

# random list
random_list = [1, 'a', 0, False, True, '0']

filtered_iterator = filter(None, random_list)

#converting to list
filtered_list = list(filtered_iterator)

print(filtered_list)

輸出

[1, 'a', True, '0']

None 用作filter() 函數的第一個參數時,將提取所有為真值的元素(如果轉換為布爾值,則給出True)。

相關用法


注:本文由純淨天空篩選整理自 Python filter()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。