You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3中链式使用'in'关键字的两段代码是否存在差异?

两段Python代码的差异分析

这两段代码存在本质逻辑差异,具体区别如下:

第一段代码的逻辑问题

代码:

arr = ['a', 'ab', 'abc', 'b', '1', 'c']
if 'a' and 'b' and 'c' in arr:
    print(True)

由于Python运算符优先级,in的优先级高于and,所以实际执行顺序是:
('a') and ('b') and ('c' in arr)

非空字符串在布尔上下文里会被判定为True,因此'a'和'b'都等价于True,最终条件简化为仅判断'c'是否在arr中。哪怕arr里没有'a'或'b',只要有'c',就会打印True。

比如修改arr为['c'],这段代码依然会输出True,显然不符合“同时检查a、b、c都存在”的预期。

第二段代码的正确逻辑

代码:

arr1 = ['a', 'ab', 'abc', 'b', '1', 'c']
if 'a' in arr1 and 'b' in arr1 and 'c' in arr1:
    print(True)

这段代码的逻辑是分别检查'a'、'b'、'c'三个元素是否都存在于arr1中,只有当三者同时存在时,才会执行print(True)。如果arr1里缺少其中任意一个元素,条件都会不成立,不会打印内容。

内容的提问来源于stack exchange,提问作者Infernalissss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 20:24:30