为什么此布尔表达式的计算结果为False?

时间:2019-05-16 17:30:14

标签: python

有人可以向我解释为什么Python解释器将这个表达式评估为False吗?

1 in [1] == True

我希望[1]中的1可以评估为True,并且显然True == True将为True。但这不是发生的事情-表达式为False。为什么会这样?

2 个答案:

答案 0 :(得分:11)

==in都是比较运算符。并且当您有多个这样的比较运算符时,Python会将其视为链式比较。例如,1 < x < 10等效于1 < x and x < 10

在您的情况下,1 in [1] == True等同于(1 in [1]) and ([1] == True),其结果为False

答案 1 :(得分:1)

如果您有类似python的表达式,请将其拆分为更多语句。实际上:

1 in [1] == True equals to: (1 in [1]) and ([1] == True)

由于[1] != True,右侧为假,整个句子为假