下面的代码如何工作?不应该不可变的元素吗?请澄清


>>> tuple1 = (1,2,3,4)
>>> tuple2 = (3,4,5,6)
>>> tuple1 = tuple1+tuple2
>>> print tuple1
(1, 2, 3, 4, 3, 4, 5, 6)
>>>

对不起,如果这是一个菜鸟问题,并且发布了此问题,因为我找不到与此相关的任何内容。

元素是不可变的,您没有任何地方改变了元组的内容。名称另一方面是可变的。您更改了名称tuple1指向的内容。

您可以做到这一点:

tuple1 = (1,2,3,4)
tuple2 = (3,4,5,6)
new_tuple = tuple1 + tuple2

将名称 tuple1未触及,并且它引用的元组也保持不变。您创建的新元组被分配给其他名称。

您的不能做的直接分配给元组的索引:

>>> tuple1[0] = 42
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

将此与list对象进行比较,上面的作业将有效。

操作tuple1 + tuple2创建新的元组对象,并具有其他两个元组的内容。结果可以分配,包括名称tuple1tuple2

我强烈建议您阅读有关Python名称的工作原理以及它们如何与诸如元组和整数(是对象(之类的东西分开的。参见Ned Batchelder的事实和关于Python名称和价值的神话

相关内容

最新更新