“in”运算符链接( True in [True] in [True] OUTPUT: False )

ars*_*lan 6 python list operators operator-precedence

我试图弄清楚这段代码的运行顺序:

print( True in [True] in [True] )
False
Run Code Online (Sandbox Code Playgroud)

虽然:

print( ( True in [True] ) in [True] )
True
Run Code Online (Sandbox Code Playgroud)

和:

print( True in ( [True] in [True] ) )
TypeError
Run Code Online (Sandbox Code Playgroud)

如果第一个代码不是最后两个代码,那么怎么办?

小智 11

in正在与那里的链接进行比较,所以

True in [True] in [True]
Run Code Online (Sandbox Code Playgroud)

相当于(除了中间[True]被评估一次)

(True in [True]) and ([True] in [True])
Run Code Online (Sandbox Code Playgroud)

这是

True and False
Run Code Online (Sandbox Code Playgroud)

这是

False
Run Code Online (Sandbox Code Playgroud)

这都类似于

2 < 4 < 12
Run Code Online (Sandbox Code Playgroud)

相当于 的操作(2 < 4) and (4 < 12)