我刚刚遇到一些带有以下语句的 python 代码:
if a==b in [c,d,e]:
...
Run Code Online (Sandbox Code Playgroud)
事实证明:
>>> 9==9 in [1,2,3]
False
>>> 9==9 in [1,2,3,9]
True
>>> (9==9) in [1,2,3,9]
True
>>> 9==(9 in [1,2,3,9])
False
>>> True in [1,2,3,9]
True
>>> True in []
False
>>> False in []
False
>>> False in [1,2,3]
False
Run Code Online (Sandbox Code Playgroud)
我是否正确地假设 等于a==b in [c,d,e],因此只有当是 True/False 值列表(a==b) in [c,d,e]时才真正有意义?[c,d,e]
b在我看到的代码始终在列表中的情况下[c,d,e]。那么它是否等同于简单地使用a==b?
我假设这
a==b in [c,d,e]相当于(a==b) in [c,d,e]
不。由于 和==都是in比较运算符,因此表达式
a == b in [c, d, e]
Run Code Online (Sandbox Code Playgroud)
相当于
(a == b) and (b in [c, d, e])
Run Code Online (Sandbox Code Playgroud)
因为所有比较运算符具有相同的优先级但可以链接。
因此只有当 是/值
[c,d,e]的列表时才真正有意义?TrueFalse
检查整数列表中是否包含布尔值也很有意义。由于True被认为等于1,并且False被认为等于0(请参阅标准类型层次结构),因此该检查的结果甚至可以是True。
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |