Python元组到底是什么意思

时间:2019-02-01 06:43:11

标签: python

(0,)==(0)
False

在(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)吗?

1 个答案:

答案 0 :(得分:4)

(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的结果。