2017-06-13 58 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是一個可接受的值。雖然我忘記了它會等於一個布爾型的假。 –

相關問題