Python中使用filter(None)为何会从列表中移除0?
问题解答
当你调用filter(None, 可迭代对象)时,filter会默认用元素的布尔真值来筛选——只有布尔值为True的元素会被保留。
在Python里,以下值会被视为布尔假(False):
- 数字0(包括整数0、浮点数0.0等)
- 空序列/集合(比如
''、[]、{}) NoneFalse本身
你的列表里的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
相关产品推荐
相关产品推荐

