首页 > 解决方案 > python中的空值

问题描述

根据定义, None 关键字用于定义空值或根本没有值。但为什么会这样:

inputs = [3, 0, 1, 2, None]
print(list(filter(None, inputs)))

返回此列表[3,1,2]而不是[3,0,1,2]

标签: python

解决方案


根据文档_filter

如果functionNone,则假定恒等函数,即所有iterable为 false 的元素都被删除。

身份函数基本上是:

def identity(something):
    return something

因此对此进行过滤意味着任何评估 false-y 的值都将从输出中排除。

然后,如果您查看真值测试,您可以看到,以及None0在 Python 中评估 false-y:

以下是大多数被认为是错误的内置对象:

  • 常量定义为假:NoneFalse
  • 任何数字类型的零:0, 0.0, 0j, Decimal(0),Fraction(0, 1)
  • ...

推荐阅读