我对all()运算符的理解是,如果iterable的所有元素返回值true,则返回true。要么我完全误解了它的功能,要么下面的内容不太正确:
>>> 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,但当作为列表的一部分进行测试时,它返回为真?
>>> all([6, 7, 8, 9])
True
>>> 6 == True
False
这是我没有得到的一点?
答案 0 :(得分:2)
检查一下:您真正问的是,6
和7
似乎是False
,为什么第二个表达式为True
。如果是这样,答案是非零整数在布尔上下文中求值为True
;但是当你测试6 == True
时,整数不会被强制转换为布尔类型,因此你有效地测试了6 == 1
False
。
编辑:在布尔上下文中测试某些东西是True
的正确方法是,例如:
bool(6)