在关于复数视频的视频讲座中,他们说你不能向元组添加新元素,但你可以将新对象连接到元组。
答案 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)
这归结为mutable
和immutable
数据类型。
由于tuple
为immutable
,因此无法更改。因此,您不能添加/追加元素到它的末尾。它与{em>完全的工作方式相同string
。
因此,在定义tuple
之后,您所能做的就是将与另一个tuple
连接的相同(未更改)tuple
重新分配到同一个{{} 1}}名字。这与variable
(list
)的工作方式不同。
举一些例子:
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