title: 过滤
description: filter() 是 Python 的内置高阶函数,用于过滤序列中的元素。它接收一个函数和一个可迭代对象作为参数,返回一个迭代器(Python 3 中)包含所有使函数返回 True 的元素。
Python filter() 函数详解与实用案例
1. filter() 函数基础
filter() 是 Python 的内置高阶函数,用于过滤序列中的元素。它接收一个函数和一个可迭代对象作为参数,返回一个迭代器(Python 3 中)包含所有使函数返回 True 的元素。
基本语法
与 map() 的区别
map():将函数应用于每个元素,返回处理后的结果filter():根据函数返回值(True/False)决定是否保留元素
2. 基本使用示例
示例1:过滤奇数
示例2:过滤空字符串
3. 惰性求值特性
filter() 返回的是一个迭代器(Iterator),这意味着它是惰性计算的:
4. 使用 lambda 表达式简化
filter() 经常与 lambda 表达式结合使用:
5. 实用案例:埃拉托斯特尼筛法(素数筛选)
6. 现代Python中的替代方案
虽然 filter() 仍然有用,但在许多情况下,列表推导式或生成器表达式可能更清晰:
7. 练习:回文数筛选
8. 性能考虑
对于大数据集,filter() 比列表推导式更节省内存,因为它是惰性求值的。但在 Python 3 中,filter() 返回的是迭代器,如果需要多次使用结果,可能需要转换为列表。
9. 总结
filter()是一个强大的函数式编程工具,用于序列过滤- 它返回一个迭代器,支持惰性计算
- 可以与自定义函数或 lambda 表达式结合使用
- 对于简单过滤,列表推导式可能是更好的选择
- 在处理大型数据集时,
filter()的内存效率更高
10. 扩展阅读
- Python 官方文档关于
filter()的说明 - 函数式编程概念:map, reduce, filter
- itertools 模块中的过滤函数(如 filterfalse)
- 生成器表达式与列表推导式的比较

