代码点读机 / Python / filter

filter Python · 内置函数

`filter` 根据一个条件函数筛选可迭代对象中的元素,只保留函数返回 `True` 的元素。就像用筛子过滤沙子,只留下符合大小的沙粒。

怎么用

filter(条件函数, 可迭代对象)

小例子

数字 = [1, 2, 3, 4, 5, 6]
偶数 = filter(lambda x: x % 2 == 0, 数字)
print(list(偶数))

运行结果

[2, 4, 6]

对比:手动写循环加条件

数字 = [1, 2, 3, 4, 5, 6]
偶数 = []
for x in 数字:
    if x % 2 == 0:
        偶数.append(x)
print(偶数)
用 `filter` 更简洁。

常见使用场景

1. 筛选出满足条件的数据:
成绩 = [85, 92, 78, 60, 95]
及格 = list(filter(lambda x: x >= 60, 成绩))
print(及格)   # [85, 92, 78, 60, 95]
2. 过滤掉空字符串:
列表 = ["apple", "", "banana", " ", "cherry"]
非空 = list(filter(lambda s: s.strip() != "", 列表))
print(非空)
3. 清理数据中的 None。

对比:不使用 with 需要手动关闭

f = open("笔记.txt", "w", encoding="utf-8")
f.write("你好")
f.close()   # 忘记关闭可能导致数据丢失或占用资源
用 with open 可以自动关闭,更安全。

提醒:- `filter` 返回迭代器。 - 条件函数应该返回布尔值,`None` 或假值也会被过滤掉。 - 如果条件函数是 `None`,则直接过滤掉假值元素。

官方文档:https://docs.python.org/zh-cn/3/library/functions.html#filter

在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← Python全部词条