Python all([6,7,8,9])= True。但是6 =假

时间:2017-01-15 16:44:47

标签: python python-3.x boolean short-circuiting

我对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

这是我没有得到的一点?

1 个答案:

答案 0 :(得分:2)

检查一下:您真正问的是,67似乎是False,为什么第二个表达式为True。如果是这样,答案是非零整数在布尔上下文中求值为True;但是当你测试6 == True时,整数不会被强制转换为布尔类型,因此你有效地测试了6 == 1 False

编辑:在布尔上下文中测试某些东西是True的正确方法是,例如:

bool(6)