以下面的代码为例:t=(1,2,3)t+=(4,)print(t)打印的值是 (1,2,3,4)。元组 t 的值不是刚刚改变了,这类似于列表对象的追加/扩展方法吗?
3 回答
浮云间
TA贡献1829条经验 获得超4个赞
您可以将元组连接成一个新的元组。您正在用t新值完全替换 的值。您不能修改现有元组。为了显示:
t = (1, 2, 3)
u = t
t += (4,) # shorthand for t = t + (4,)
t == u # False
t is u # False
t并且u不再引用同一个对象。
对于可变数据结构,情况并非如此:
t = [1, 2, 3]
u = t
t.append(4)
t == u # True
t is u # True
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
t += (4,)
或多或少是语法糖。它翻译成
t = t.__iadd__((4,))
(假设此方法存在。如果不存在,则回退到t = t + (4,)
)。由于元组是不可变的,充其量__iadd__
会返回一个绑定到旧名称的新元组t
。对于类似设置中的列表,返回的列表将是(变异的)原始列表。
添加回答
举报
0/150
提交
取消