python - 为什么 [] == False 在 python 中评估为 False 但 0 == False 为 True?
问题描述
我对 Python 比较陌生,不了解以下行为:
为什么声明
[] == False
评估为假,即使空列表是假的?
这里有更多示例 - 在许多其他情况下,空列表似乎确实以虚假的方式表现,而不是 [] == False...
>>> 0 == False # what I'd expect
True
>>> not [] # what I'd expect
True
>>> bool([]) # what I'd expect
False
>>> [] == True # what I'd expect
False
>>> [] == False # unexpected
False
>>> bool([]) == False # why does it evaluate to True again now?
True
>>> ([]) == (bool([])) # unexpected
False
>>> (not []) == (not bool([]) # apparently adding 'not' makes it behave as expected again - why?
True
有人可以向我解释一下吗?这些陈述是如何内部评估的?
我有一种感觉,它可能与链接比较有关(参见例如此处),但不能真正理解这是否正确以及为什么。
解决方案
因为 falsy 不是False
。Falsy 只是意味着
bool(some_object) is False
所以,
>>> bool([]) is False
True
>>> bool({}) is False
True
>>> bool(0) is False
True
推荐阅读
- python - 在 Python 中计算符号数组的指数
- python - Pandas 的输出不一致以 np.std 作为函数参数应用函数
- python - 如何将 RGBA 字节串转换为灰度图像?
- netbeans - 有没有办法修复netbeans中的自动缩进,netbeans花括号自动插入会做一些奇怪的事情?
- javascript - 在错误的 div 中创建波形
- graphql - graphql中upade函数的单独类型突变有什么意义?
- javascript - 在 JavaScript 中解构导入的对象
- reasoning - clgo中勇敢/谨慎的推理
- django - 如何在 Django 中更改渲染 URL?
- c - 计算大数时的计数错误(例如 50!)