首页 > 解决方案 > 如果元组是可变的,则 python 元组分配

问题描述

我是 python 新手。元组据说是不可变的,但为什么我们可以做这样的事情。即连接并更改原始值

a=(1,2,3)
>>> a
(1, 2, 3)
>>> b=(4,5,6)
>>> b
(4, 5, 6)
>>> a=a+b
>>> a
(1, 2, 3, 4, 5, 6)

在这种情况下,我们不是在更改元组 a 中的值吗?

标签: pythontuples

解决方案


不,您正在创建一个新元组。考虑。

>>> a = (1, 2, 3)
>>> a1 = a

现在a1a是同一个元组。不仅仅是相似的外观;他们是一样的。然后

>>> b = (4, 5, 6)
>>> a = a + b

现在a(1, 2, 3, 4, 5, 6)。我们是否更改了我们创建的第一个元组?让我们问一下Python。

>>> a
(1, 2, 3, 4, 5, 6)
>>> a1
(1, 2, 3)

不,原始元组保持不变。

这种区别很重要。您创建了一个新元组,并且碰巧给它起了相同的名称。这意味着,如果您正在编写一个具有巨大对象层次结构的复杂程序,那么您刚刚所做的更改a不会破坏任何其他依赖a. 它只会破坏您a控制的特定变量。另一方面,如果我们有一个列表a = [1, 2, 3]并开始附加到它,那么任何其他碰巧持有对该列表的引用的对象现在都会看到这些变化,这会导致远处出现混乱的错误。


推荐阅读