据我所知,Python 中的 in
运算符无法链接,或者至少我找不到任何相关信息,这是我的问题
这是代码
arr = [1, True, 'a', 2]
print('a' in arr in arr) # prints False
print(('a' in arr) in arr) # prints True
我不明白的是第一个打印,我知道在第二个打印中,第一个 in
返回 True
,然后检查是否 True
位于 arr 中,但是第一个呢?它是否检查 'a'
是否在 in arr
中,然后检查 arr
是否在 in arr
中?
最佳答案
前提是假的; in
运算符可以被链接起来。请参阅Comparisons在文档中:
comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "!="
| "is" ["not"] | ["not"] "in"
因此,与任何其他链式比较一样,a in b in c
等价于 (a in b) 和 (b in c)
(除了 b
仅计算一次。
'a' in arr in arr
为 false 的原因是 arr in arr
为 false。 x in x
唯一一次为 true 的情况是 x 是对 __contains__
进行子字符串比较的类型(例如 str
或 bytes
) code>),或者它是一个实际上包含自身的容器(例如 lst = []; lst.append(lst)
)。
关于python - `in` 运算符链接出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50866585/