Python中if A and B in C条件判断结果不符合预期问题排查
问题根因
你遇到的问题是Python运算符优先级和表达式解析规则导致的逻辑偏差:in运算符的优先级高于and运算符,所以你写的if A and B in C:不会按照你预想的逻辑解析,实际执行的判断等价于:if (bool(A)) and (B in C):
也就是先单独判断A本身的布尔值是否为真,再判断B是否在C中,两个条件同时为真才会执行后续代码。
从你描述的触发现象来看,你大概率是想要实现「A和B都在C中才触发打印」的逻辑,这种写法完全不满足你的需求,属于语法简写的错误用法——Python不会自动把A and B in C识别为两个in判断的逻辑与。
修复方案
根据你实际要实现的逻辑二选一即可:
- 如果你要判断A、B两个元素都属于C,需要拆分写两个独立的
in判断:
if A in C and B in C: print("Ok!")
- 如果你要判断A和B做逻辑与运算后的结果属于C,需要加括号提升
A and B的运算优先级:
if (A and B) in C: print("Ok!")
内容的提问来源于stack exchange,提问作者Ccp2809
相关产品推荐
相关产品推荐

