You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中使用filter(None)为何会从列表中移除0?

问题解答

当你调用filter(None, 可迭代对象)时,filter会默认用元素的布尔真值来筛选——只有布尔值为True的元素会被保留。

在Python里,以下值会被视为布尔假(False):

  • 数字0(包括整数0、浮点数0.0等)
  • 空序列/集合(比如''、[]、{})
  • None
  • False本身

你的列表里的0属于上述布尔假值,所以被filter自动移除了,最终只剩下5,8,9这些布尔真值的元素。

如果想保留0,需要自定义筛选条件,比如明确只排除None:

d = list(filter(lambda x: x is not None, [0,5,8,9]))
# 输出会是 [0,5,8,9]

内容的提问来源于stack exchange,提问作者Solu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 17:20:57