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

Python中in与!=运算符优先级问题:表达式结果为何不符预期

问题解析

第一个表达式 1 in temp != 2 in temp 输出False的原因

Python中所有比较运算符(包括in、!=、<等)优先级相同,且支持链式比较。链式比较的核心规则是:a op1 b op2 c 等价于 a op1 b and b op2 c,中间的操作数b只会被计算一次。

对于1 in temp != 2 in temp,Python会将其解析为链式比较,等价于:

(1 in temp) and (temp != 2) and (2 in temp)

分步计算:

  1. 1 in temp:temp是[1],结果为True
  2. temp != 2:列表[1]和整数2不相等,结果为True
  3. 2 in temp:2不在列表[1]中,结果为False

最终True and True and False的结果是False,这就是第一个表达式输出False的原因。

第三个表达式 ((1 in temp) != 2) in temp 输出True的原因

我们可以分步拆解这个表达式:

  1. 最内层1 in temp:结果为True
  2. 计算True != 2:Python中bool是int的子类,True等价于整数1,因此1 != 2的结果为True
  3. 最后计算True in temp:由于True等价于1,而1在列表temp中,因此结果为True

所以整个表达式的最终结果是True。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:20:45