2017-06-13 83 views

回答

1

您的迭代器包含0,0评估为False

1

在Python中,整数0等于False。

+0

确实如此,但all()并不关心平等。 'None'不等于'False',也不是'0.0'或'()'或'[]',但所有这些值*在布尔上下文*中测试为false,这是重要的。 –

6

all()返回true如果所有值都为真,请参阅function documentation

返回True如果迭代的所有元素都为真(或如果可迭代为空)。

0不是真值:

>>> bool(0) 
False 

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

下面的值被认为是假:

[.. 。]

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

要检查数组包含“假”的任何地方布尔值(我猜你 本来打算做的),简单地做:

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

我真的想检查是否所有的值都存在,即“不为空”,所以0是一个可接受的值。虽然我忘记了它会等于一个布尔型的假。 –

相关问题