我不明白我是如何得到这个输出的(在操作员链接中)

时间:2018-06-14 22:06:12

标签: python

据我所知,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?

1 个答案:

答案 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__进行子字符串比较的类型(如strbytes),或者它是实际包含自身的容器(比如lst = []; lst.append(lst))。