如题:
当语句是这样时:
>>> 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 ==2
与if i == (1 or 2)
应该是等价的,是我记错了还是我把不同语言规则记混了,求指教!!
参考GPT和自己的思路:在 Python 中,if i == 1 or i == 2
与 if 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)
是不正确的写法。