【问题标题】:Tuple equality in python suprises [closed]python中的元组相等性令人惊讶[关闭]
【发布时间】:2022-01-21 03:28:22
【问题描述】:

不明白为什么在 Python 中:

>>> (1,1) == 1,1 

返回

>>>  (False, 1) 

还有声明:

>>>  1,1 == (1,1)

返回

>>> (1, False)

但是

>>> (1,1) == (1,1) 

返回

 >>> True 

还有

 >>> 1,1,1 == (1,1,1) 

返回

>>> (1, 1, False) 

有人可以解释发生了什么吗?

【问题讨论】:

  • 因为(1, 1) == 1, 1 等价于((1, 1) == 1), 1 而不是(1, 1) == (1, 1)
  • 好吧,基本上,如果您认为整个表达式都包含在 () 中,这可能会有所帮助 - 这是有道理的,因为 REPL 正确地将表达式标识为元组类型。
  • 因为括号不是元组语法的一部分,它们只是用于对表达式进行分组的普通括号——你只需要它们在没有它们含义会不同的上下文中(例如,在, 将分隔参数的函数调用中)。作为练习,尝试预测1,1==1,1 的结果。你说对了吗?
  • 当然不是重复的,但另见:stackoverflow.com/questions/45517855/…
  • 哦,我想你必须知道的另一件事是,==之间的操作顺序。

标签: python tuples


【解决方案1】:

在第一个示例中,Python 正在创建一个包含两件事的元组:

  • 表达式:(1,1) == 1(计算结果为 False
  • 整数:1

在执行操作的顺序周围添加括号可能有助于您理解输出:

(1,1) == 1,1

是一样的
((1,1) == 1), 1)

这里,(1,1) == 1) 计算结果为False,所以你得到了输出

(False, 1)

同理,

1,1 == (1,1)

翻译成1, (1 == (1,1)),变成

(1, False)

1,1,1 == (1,1,1)

转换为1,1, (1 == (1,1,1)),即

(1, 1, False)

在这个例子中,Python 正在创建一个包含三件事的元组:

  • 两个1
  • 表达式:1 == (1,1,1)(计算结果为 False

【讨论】:

  • 是的,看起来不错
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-09
  • 2022-06-11
  • 2011-04-29
  • 2017-04-10
  • 2021-09-28
  • 1970-01-01
  • 2019-10-05
相关资源
最近更新 更多