当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。