咨询Python中IN运算符的AND联合运算结果不符合常规逻辑的原因
为什么你的第三个Python表达式结果和预期不符?
核心原因是运算符优先级:Python中in运算符的优先级高于and,这导致第三个表达式的执行顺序和你想象的完全不一样。
我们逐个拆解你的例子:
例子1:
False and False and True
这是标准的逻辑与运算,只要有一个操作数为False,结果就为False,符合预期。例子2:
'a' in 'ccc' and 'b' in 'ccc' and 'c' in 'ccc'
这里每个in运算先执行,得到False and False and True,最终结果为False,符合预期。例子3:
'a' and 'b' and 'c' in 'ccc'
因为in优先级更高,Python会先执行'c' in 'ccc',得到True。此时表达式变成了'a' and 'b' and True。
在Python中,非空字符串属于真值(即布尔判断时视为True),所以'a'和'b'都等价于True,最终表达式就变成True and True and True,结果自然是True。
如果你想让第三个表达式和前两个逻辑一致,需要明确每个字符串的in判断,正确写法是:
('a' in 'ccc') and ('b' in 'ccc') and ('c' in 'ccc')
或者保持和例子2一样的写法,每个判断都明确写出in 'ccc'。
内容的提问来源于stack exchange,提问作者Maria
相关产品推荐
相关产品推荐

