可能重复:
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
答案 0 :(得分:13)
空列表[]
不等于None
。
但是,可以评估为False
- 也就是说,其“真实性”值为False
。 (参见OP上留下的评论中的来源。)
因此,
>>> [] == False
False
>>> if []:
... print "true!"
... else:
... print "false!"
false!
答案 1 :(得分:0)
None
是NoneType
的唯一实例,通常用于表示缺少价值。在您的示例中发生的是,在布尔上下文中采用的空列表求值为False
,条件失败,因此执行else分支。口译员做了类似的事情:
>>> a if a else None
[] if [] else None
[] if False else None
None
以下是关于None
:not None test in Python