Python 中的 filter() 函数是什么?
在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() 函数可以灵活、高效地过滤出符合特定条件的元素。
