【发布时间】:2017-05-30 12:52:58
【问题描述】:
我对 all() 运算符的理解是,如果可迭代的 所有 元素返回 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,但是当作为列表的一部分进行测试时,它返回为 true?
>>> all([6, 7, 8, 9])
True
>>> 6 == True
False
这是我不明白的一点?
【问题讨论】:
-
见
bool(6)。 -
True 和 False 的序数值分别为 0 和 1 IIRC。因此,这种行为。如果您想解释为 bool,请使用,例如
bool(6) -
在我看来这个关闭太仓促了。检查我:你真正要问的是,
6和7似乎是False,那么为什么第二个表达式是True。如果是这样,答案是非零整数在布尔上下文中计算为True;但是当您测试6 == True时,整数不会被强制转换为布尔类型,因此您实际上是在测试6 == 1,即False。 -
啊!谢谢汤姆!我现在知道了。抱歉,我对这种真实行为一无所知,现在您已经解释说,我实际上因为一开始没有注意到自己而感到愚蠢。有什么方法可以为您提供正确答案的信用,即使它是评论?
-
@Matthew 现在它已经重新打开了,是的 :)
标签: python python-3.x boolean short-circuiting