在python中的元组中添加对象和连接对象之间有什么区别吗?

时间:2017-12-15 15:07:29

标签: python python-3.x

在关于复数视频的视频讲座中,他们说你不能向元组添加新元素,但你可以将新对象连接到元组。

4 个答案:

答案 0 :(得分:1)

原始元组仍未受影响。你得到一个包含两个元组值的 new 元组。

>>> a = (1, 2)
>>> b = a + (3, )
>>> id(a) != id(b)
True

将此与列表进行对比,该列表允许您向其添加元素:

>>> a = [1, 2]
>>> a.append(3)
>>> a
[1, 2, 3]

答案 1 :(得分:0)

这归结为mutableimmutable数据类型。

由于tupleimmutable,因此无法更改。因此,您不能添加/追加元素到它的末尾。它与{em>完全的工作方式相同string

因此,在定义tuple之后,您所能做的就是将与另一个tuple连接的相同(未更改tuple重新分配到同一个{{} 1}}名字。这与variablelist)的工作方式不同。

举一些例子:

mutable

答案 2 :(得分:0)

Tuples是Python的不可变序列类型之一。

  

元组是不可变序列,通常用于存储异构数据的集合(例如由内置的enumerate()生成的2元组)。元组还用于需要不可变的同类数据序列的情况(例如允许在set或dict实例中存储)。

>>> t = (123, 456, 'tuple')
>>> t[0] = 789
Traceback (most recent call last):
  File "<pyshell#108>", line 1, in <module>
    t[0] = 789
TypeError: 'tuple' object does not support item assignment
>>> # But tuples can contain mutable objects:
>>> v = ([1, 2, 3], ['a', 'b', 'c'])
>>> v
([1, 2, 3], ['a', 'b', 'c'])
>>> v[0].append(4)
>>> v
([1, 2, 3, 4], ['a', 'b', 'c'])
>>> del v[1][2]
>>> v
([1, 2, 3, 4], ['a', 'b'])
>>> 

答案 3 :(得分:0)

其他答案已经给出了一些很好的例子,但主要是使用了不同的方法来添加&#34; for(mutable)list和for(immutable)tuples。但是,对于两者使用相同的操作(即+=)可能更清楚。这将添加到列表(修改它),但它将创建一个 new 元组,它是原始元组和新值的串联。

# original list and all references to it are modified
>>> l1 = l2 = [1, 2, 3]
>>> l1 += [4, 5]
>>> l1 is l2
True
# new tuple is created, references to original unaffected
>>> t1 = t2 = (1, 2, 3)
>>> t1 += (4, 5)
>>> t1 is t2
False