マキシムSheludyakov:
なぜ('a' in arr) in arr
!= 'a' in arr in arr
?
arr = [1, True, 'a', 2]
print(('a' in arr) in arr) # -> True
print('a' in arr in arr) # -> False
chepner:
Python言語リファレンスの6.10節は、比較演算子と比較チェーンを説明します。in
比較演算子とみなされ、そうと同じように動作され<
、明示的なグループ化括弧なしなど、x OP1 y OP2 z
と等価であるx OP1 y and y OP2 z
任意の2つの比較演算子。
この意味は
'a' in arr in arr
括弧なし、と等価です
'a' in arr and arr in arr
arr
式があるので、自身の要素ではありません False.
そう、無効チェーンをカッコ
('a' in arr) in arr
他のネストされた式のように評価されます。'a' in arr
第1の値に評価されTrue
、その後True in arr
も生成するように評価されますTrue
。