2017-01-15 43 views
3

我對all()運算符的理解是,如果全部 iterable的元素返回true值,它將返回true。要麼我完全誤解了它的功能,要麼就是不完全正確:Python all([6,7,8,9])= True。但是6 = False

>>> all([0, 7, 8, 9]) 
False 
>>> all([6, 7, 8, 9]) 
True 
>>> any([0, 7, 8, 9]) 
True 
>>> 0 == True 
False 
>>> 1 == True 
True 
>>> 6 == True 
False 
>>> 7 == True 
False 

這是怎麼回事?

編輯 好吧,我得到了很多答案,解釋爲0是錯誤的。我明白了。 0 =假,1 =真。 我的問題是,6返回False,但作爲列表的一部分測試時,它返回爲true?

>>> all([6, 7, 8, 9]) 
True 
>>> 6 == True 
False 

這是我沒有得到的位?

+2

看到'布爾(6)'。 –

+0

正確和錯誤具有0和1 IIRC的序數值。因此,這種行爲。如果你想解釋爲bool,然後使用,例如'布爾(6)' –

+0

對我來說這樣太倉促了。檢查我:你真正要問的是,'6'和'7'看起來是'False',那麼爲什麼第二個表達式是'True'。如果是這樣,答案是非零整數在布爾上下文中評估爲「真」;但是當你測試'6 == True'時,這個整數沒有被強制爲一個布爾類型,所以你正在測試'6 == 1',這是'False'。 –

回答

2

檢查我:你真正要問的是,67看起來是False,那麼爲什麼是第二個表達式True。如果是這樣,答案是非零整數在布爾上下文中計算爲True;但是當您測試6 == True時,整數不會被強制轉換爲布爾類型,因此您正在測試6 == 1,即False

編輯:測試,如果事情是True在布爾上下文,例如正確的方法:

bool(6) 
相關問題