python中Filter函数作用
Python 中的 filter
函数用于根据特定的条件筛选序列中的元素。它接收两个参数:一个函数和一个序列,然后将序列中的每个元素传递给该函数并保留返回值为 True
的元素。最终返回一个过滤后的迭代器。
使用方法:
def is_even(n):
return n % 2 == 0
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_numbers = filter(is_even, numbers)
print(list(filtered_numbers)) # 输出: [2, 4, 6, 8, 10]
在这个示例中,我们定义了一个函数 is_even
,该函数判断一个数是否是偶数。然后,我们使用 filter
函数筛选列表 numbers
中的偶数,最后将过滤结果转成列表并打印出来。
扩展知识
filter
函数是 Python 中非常有用的基础函数之一,适用于各种场景。
1)使用 Lambda 表达式:为了简化代码,有时你可以使用lambda 表达式而不是定义一个单独的函数。
# 定义一个包含 1 到 10 的列表
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 使用 filter 函数过滤出偶数
filtered_numbers = filter(lambda n: n % 2 == 0, numbers)
# 将 filter 对象转换为列表并打印
print(list(filtered_numbers)) # 输出: [2, 4, 6, 8, 10]
2) 与内置函数结合使用:比如结合 str.isdigit
筛选列表中的数字字符串。
# 定义字符串列表
strings = ["hello", "123", "world", "456"]
# 使用 filter 函数结合 str.isdigit 过滤出全为数字的字符串
digits = filter(str.isdigit, strings)
# 将 filter 对象转换为列表并打印
print(list(digits)) # 输出: ['123', '456']