filter
是 Python 内置函数之一,用于从一个可迭代对象中过滤出满足指定条件的元素,并返回一个由满足条件的元素组成的迭代器(iterator)。
函数语法
filter(function, iterable)
参数:
function
: 这是一个用于判断每个元素是否满足条件的函数。它接受一个参数,即可迭代对象中的每个元素,并应返回一个布尔值(True
或False
),表示该元素是否应该被保留。如果传入None
,则默认过滤掉所有被视为假值的元素。iterable
: 这是要过滤的可迭代对象,如列表、元组、集合等。
示例代码
以下是一些示例代码来说明 filter
函数的用法:
示例 1: 过滤偶数
def is_even(x):
return x % 2 == 0
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_numbers = filter(is_even, numbers)
even_numbers = list(filtered_numbers)
print(even_numbers)
运行结果:
[2, 4, 6, 8, 10]
示例 2: 过滤长度大于等于 5 的字符串
def is_long_enough(s):
return len(s) >= 5
words = ["apple", "banana", "cherry", "date", "elderberry", "fig"]
filtered_words = filter(is_long_enough, words)
long_words = list(filtered_words)
print(long_words)
运行结果:
['banana', 'cherry', 'elderberry']
示例 3: 过滤非空元素
data = [0, '', None, False, 42, 'hello', [], True]
filtered_data = filter(None, data)
non_empty_values = list(filtered_data)
print(non_empty_values)
运行结果:
[42, 'hello', True]
示例 4: 使用 lambda 函数进行过滤
numbers = [15, 25, 30, 45, 50, 65]
filtered_numbers = filter(lambda x: x > 30, numbers)
selected_numbers = list(filtered_numbers)
print(selected_numbers)
运行结果:
[45, 50, 65]
总结
filter
函数是一个强大的工具,可以用于从可迭代对象中快速过滤出满足指定条件的元素。你可以传入自定义的函数或使用 lambda
函数来指定过滤条件。记住,filter
返回一个迭代器,所以需要将其转换为列表或其他类型的可迭代对象,以便查看结果。