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

Python中in语句与布尔值比较疑问:为何1 in [1] == True返回False?

Python中1 in [1] == True的执行逻辑解析

核心原因是Python的链式比较特性,以及in和==属于同一优先级的比较运算符,导致语句的解析方式和直觉里的不一样。

逐个分析三个语句:

  • 第一个语句:print(1 in [1] == True)
    Python会把这个表达式解析成:

    (1 in [1]) and ([1] == True)
    

    拆解计算:

    • 1 in [1]的结果是True
    • [1] == True的结果是False(列表和布尔值类型不同,直接判定不相等)
      最终True and False的结果就是False,这就是输出False的原因。
  • 第二个语句:print((1 in [1]) == True)
    括号强制改变了运算顺序,先计算1 in [1]得到True,再和True做相等比较,结果自然是True。

  • 第三个语句:print(1 in ([1] == True))
    先计算[1] == True得到False,接着尝试判断1 in False——但布尔值不是可迭代对象,所以直接抛出TypeError。

补充说明

Python里的比较运算符(包括in、==、<、>等)优先级相同,并且支持链式写法,比如a < b < c等价于a < b and b < c,这里的1 in [1] == True就是链式比较的一种,只是结合了成员判断和相等判断两种操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:55:14