据我所知,python中的in运算符无法链接或者至少我找不到任何信息,这是我的问题
这是代码
arr = [1, True, 'a', 2]
print('a' in arr in arr) // prints False
print(('a' in arr) in arr) // prints True
我不明白的是第一次打印,我知道第二次打印返回True然后检查True是否在arr中,但第一次打印是什么?它会检查是否' a'在arr然后如果arr在arr?
答案 0 :(得分:3)
前提是假的; in
运算符可以链接。请参阅文档中的Comparisons:
comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "!="
| "is" ["not"] | ["not"] "in"
因此,与任何其他链式比较一样,a in b in c
等同于(a in b) and (b in c)
(除了b
仅评估一次。
'a' in arr in arr
为假的原因是arr in arr
为假。唯一一次x in x
为真的是,如果x是对__contains__
进行子字符串比较的类型(如str
或bytes
),或者它是实际包含自身的容器(比如lst = []; lst.append(lst)
)。