Python 语句理解:i for i in range(3)if i == (1 or 2)

如题:
当语句是这样时:

>>> a = [i for i in range(3) if i == 1]
>>> print(a)
[1]
>>>

当语句是这样时:

>>> a = [i for i in range(3) if i == 1 or i ==2]
>>> print(a)
[1,2]
>>>

然而当语句时这样时:

>>> a = [i for i in range(3) if i == (1 or 2)]
>>> print(a)
[1]
>>>

很不理解!我记得if i == 1 or i ==2if i == (1 or 2)应该是等价的,是我记错了还是我把不同语言规则记混了,求指教!!

参考GPT和自己的思路:在 Python 中,if i == 1 or i == 2if i == (1 or 2) 是有区别的。具体来说,(1 or 2) 的结果是 1,因为在 Python 中,or 运算符会返回第一个表达式的值,如果第一个表达式为 True,则返回第一个表达式的值;否则返回第二个表达式的值。在本例中,1 被认为是 True,因此 (1 or 2) 的结果为 1。

而当执行 if i == (1 or 2) 时,实际上被判断的是 if i == 1,因为在 Python 中,圆括号的优先级比比较运算符低。因此,只有当 i 的值为 1 时,才会将 i 加入到列表中,所以最终得到的结果是 [1]

总而言之,if i == 1 or i == 2 是正确的写法,而 if i == (1 or 2) 是不正确的写法。