空列表是否等于无?

时间:2012-12-10 17:22:16

标签: python python-3.x python-2.7 ironpython

  

可能重复:
  Why does “[] == False” evaluate to False when “if not []” succeeds?

我是python的三元运算符

的新手
>>> 'true' if True else 'false'  true
   true

我希望下面的代码输出为[],因为[]不等于None

>>> a=[]
>>> a==None
False
>>> a if a else None
None
如果我错了,请认真对待

由于 HEMA

2 个答案:

答案 0 :(得分:13)

空列表[] 等于None

但是,可以评估为False - 也就是说,其“真实性”值为False。 (参见OP上留下的评论中的来源。)

因此,

>>> [] == False
False
>>> if []:
...     print "true!"
... else:
...     print "false!"
false!

答案 1 :(得分:0)

NoneNoneType的唯一实例,通常用于表示缺少价值。在您的示例中发生的是,在布尔上下文中采用的空列表求值为False,条件失败,因此执行else分支。口译员做了类似的事情:

>>> a if a else None
    [] if [] else None
    [] if False else None
None

以下是关于Nonenot None test in Python

的另一个有用的讨论