为什么以下代码评估为false?

时间:2017-06-13 10:38:09

标签: python function

if all([0, 4, "Sample string"]):
    print "Yes"
else:
    print "No"

尽管迭代具有所有值,但它始终打印否。我无法理解是什么让它评价为假。

4 个答案:

答案 0 :(得分:6)

如果所有值为true,则

all()返回true,请参阅function documentation

  

如果iterable的所有元素都为true(或者iterable为空),则返回True

0不是真正的价值:

>>> bool(0)
False

请参阅Python标准类型文档的Truth Value Testing section

  

以下值被视为false:

     

[...]

     
      
  • 任何数字类型的零,例如,0,0.0,0j。
  •   

答案 1 :(得分:1)

您的iterable包含0,0的计算结果为False

答案 2 :(得分:1)

在Python中,整数0等于False。

答案 3 :(得分:-1)

检查数组是否包含布尔值" False"在任何地方(我猜 你原本打算这样做,只需:

if all(map(lambda v: v is not False, [0, 4, "Sample string"])):
    print "Yes"
else:
    print "No"