【问题标题】:Python tuples, what does , in the end mean [duplicate]Python元组,到底是什么意思[重复]
【发布时间】:2019-02-01 06:43:10
【问题描述】:
(0,)==(0)
False

, in (0,) 是什么意思,什么时候用这种元组代替像 (0) 这样的常规元组?

我认为这可能意味着索引 1 中的项目是 None 但事实并非如此:

(0,)[1]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
IndexError: tuple index out of range

另外,如果我想让 (0,1,) 变成 (0,1) 我该如何操作呢?

编辑:

也许我过度简化了用于我的问题的示例,这是我原来的问题:

(('Suggest', 1.0), 65)==((('Suggest', 1.0),), 65)
False

所以我猜 python 不会像数学表达式那样解释 ('Suggest', 1.0) 吗?

【问题讨论】:

  • (0) 不是元组。
  • @StephenRauch 为什么?它是什么?
  • 骗子有帮助吗?
  • @StephenRauch 有点,这是否意味着 ('Suggest', 1.0) 不是元组?那是什么?
  • ('Suggest', 1.0) 是一个二元组。 (('Suggest', 1.0), ) 是一个包含两个元素元组的单元素元组。

标签: python


【解决方案1】:

(0) 不会被 Python 解释为元组,而是作为数字表达式(如 (1+2),除非没有任何数学运算)。尾随逗号用于告诉 Python 它明确是一个 1 元素元组。

>>> type((0))
<type 'int'>
>>> type((0,))
<type 'tuple'>

(0) 计算为一个数字:

>>> (0) == 0
True

(0,) 计算为一个元组,它不是一个数字...

(0,) == 0 假的

...但是是一个元组。

>>> (0,) == tuple([0])
True

这也不是特定于数字的 - (expression) 将始终等价于 expression,而 (expression,) 将始终是一个单元素元组,元组中的第一个(也是唯一一个)项是expression 的结果。

【讨论】:

  • 请看我的编辑
  • @OfekRon ("foo")("foo",) 仍然不同 - 如果没有 ,,括号将被忽略以支持其中的表达式。使用,,它定义了一个元组。
猜你喜欢
  • 2017-08-07
  • 2017-07-20
  • 2014-09-23
  • 2014-07-25
  • 2012-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多