欢迎访问宙启技术站
智能推送

Python 中的 filter() 函数是什么?

发布时间:2023-07-06 15:48:13

在Python中,filter() 函数是内置函数之一,用于过滤可迭代对象(如列表、元组、字典等)中的元素,并返回一个符合特定条件的新可迭代对象。

filter() 函数的语法如下:

filter(function, iterable)

其中,function 是一个函数,用来定义过滤条件,iterable是一个可迭代对象,如列表或元组。

filter() 函数的工作原理是,对于可迭代对象中的每个元素,将其传递给 function 函数,并根据 function 函数的返回结果来判断是否保留该元素。如果 function 函数返回 True,则该元素被保留;如果 function 函数返回 False,则该元素被过滤掉。

以下是几个常用的示例来说明 filter() 函数的应用:

1. 过滤出偶数

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 输出 [2, 4, 6, 8, 10]

在上述示例中,lambda 函数定义了一个过滤条件,即判断元素是否为偶数。numbers 列表中的元素一个个传递给 lambda 函数判断,符合条件的元素被保留下来,然后通过 list() 函数将过滤结果转换为列表并输出。

2. 过滤出长度大于等于5的字符串

words = ["apple", "banana", "cat", "dog", "elephant", "fish"]
long_words = list(filter(lambda x: len(x) >= 5, words))
print(long_words)  # 输出 ["apple", "banana", "elephant"]

在上述示例中,lambda 函数定义了一个过滤条件,即判断字符串的长度是否大于等于5。words 列表中的每个元素一个个传递给 lambda 函数判断,符合条件的元素被保留下来,然后通过 list() 函数将过滤结果转换为列表并输出。

3. 过滤出字典中值大于等于10的键值对

scores = {"Alice": 90, "Bob": 80, "Charlie": 95, "David": 70}
high_scores = dict(filter(lambda x: x[1] >= 90, scores.items()))
print(high_scores)  # 输出 {"Alice": 90, "Charlie": 95}

在上述示例中,lambda 函数定义了一个过滤条件,即判断字典中的值是否大于等于10。scores.items() 函数将字典转换为一个包含键值对的可迭代对象,每个键值对一个个传递给 lambda 函数判断,符合条件的键值对被保留下来,然后通过 dict() 函数将过滤结果转换为字典并输出。

需要注意的是,filter() 函数返回的是一个迭代器对象,如果要得到一个列表或字典,则需要进一步使用 list() 函数或 dict() 函数进行转换。

总结:

filter() 函数是Python中的一个内置函数,用于过滤可迭代对象中的元素。

filter() 函数接受两个参数,function 和 iterable。

function 定义了过滤条件,根据传入的函数判断元素是否满足条件。

iterable 是一个可迭代对象,如列表、元组、字典等。

filter() 函数返回一个迭代器对象,可以将其转换为列表或字典,以获取过滤结果。

通过 filter() 函数可以灵活、高效地过滤出符合特定条件的元素。