为什么可以使用串联为元组分配新值?

Oli*_*r H 4 python tuples

以下面的代码为例:

t=(1,2,3)
t+=(4,)
print(t)
Run Code Online (Sandbox Code Playgroud)

打印值为(1,2,3,4).元组t的值是否刚刚改变,这类似于列表对象的append/extend方法?

dec*_*eze 5

您可以元组连接成一个新元组.您将t使用新值替换完全值.您无法修改现有元组.为了显示:

t = (1, 2, 3)
u = t
t += (4,)  # shorthand for t = t + (4,)

t == u  # False
t is u  # False
Run Code Online (Sandbox Code Playgroud)

t并且u不再引用同一个对象.

使用可变数据结构,情况并非如此:

t = [1, 2, 3]
u = t
t.append(4)

t == u  # True
t is u  # True
Run Code Online (Sandbox Code Playgroud)

  • 请注意,列表和元组上的`+ =`运算符的实现是非常不同的.在列表中,`+ =`会改变左侧操作数列表,因此您也可以在第二个示例中使用它而不是`append`. (3认同)