Python 混淆比较输出
我对以下几点感到困惑:Python 混淆比较输出,python,python-3.x,comparison-operators,Python,Python 3.x,Comparison Operators,我对以下几点感到困惑: >>> 1,2 == 1,2 (1, False, 2) =操作符应该只返回bool(或者至少我这么认为)。 我本来希望,(True,True)假设行的处理方式类似于a,b=1,2,但执行比较而不是赋值。或者,有一个错误。但绝对不是(1,False,2) 有人能解释一下这里发生了什么吗?这是: 1,2 == 1,2 作为三元素元组进行计算,分别包含1、2==1和2。您需要在此处使用两个括号: (1, 2) == (1, 2) 这在以下文件中说明:
>>> 1,2 == 1,2
(1, False, 2)
=
操作符应该只返回bool(或者至少我这么认为)。
我本来希望,(True,True)
假设行的处理方式类似于a,b=1,2,但执行比较而不是赋值。或者,有一个错误。但绝对不是(1,False,2)
有人能解释一下这里发生了什么吗?这是:
1,2 == 1,2
作为三元素元组进行计算,分别包含1
、2==1
和2
。您需要在此处使用两个括号:
(1, 2) == (1, 2)
这在以下文件中说明:
除非显示列表或集合的一部分,否则表达式列表
包含至少一个逗号将生成一个元组。元组的长度
是列表中表达式的数目。这些表达是
从左到右计算
@亚力克杜吉恩酒店
比较运算符工作如果两个操作数的值相等,则条件变为真
您试图比较错误的数据类型1,2无效
尝试“1,2”==“1,2”将给出正确的结果
1,2不是单参数。2==1
->False
。现在看看会发生什么?您正在用表达式1
,(2==1)
和2
@OliverCharlesworth定义一个元组,谢谢!这就澄清了,我不知道这是定义元组的有效方法。元组,除了空元组之外,都是由逗号定义的。如果元组不明确(或者对于没有任何逗号的空元组),只需在元组周围加括号即可。这确实是一个意外运算符执行顺序的有趣例子。虽然我想在大多数情况下,这是一种更可取的方法。1,2
是一个有效值,生成与(1,2)
相同的元组。海报的问题在于,逗号的优先级低于相等性测试,因此,在进行比较之前,中间项将相互比较,而不是分组为单独的三元组。