我已经了解了列表的可变性,并试图了解它是如何工作的。 但是,我发现了一些新的东西:
x = [1, 2, 3]
y = x
print x # [1, 2, 3]
y += [3, 2, 1]
print x # [1, 2, 3, 3, 2, 1]
可以正常使用
但是,如果我用 y = y + [3,2,1] 替换 y + = [3,2,1] ,我会得到以下结果:
x = [1, 2, 3]
y = x
print x # [1, 2, 3]
y = y+ [3, 2, 1]
print x # [1, 2, 3]
这不是我的预期。有人可以告诉我y + =是如何给出不同的结果吗?
答案 0 :(得分:1)
当你这样做时:
y = y+ [3, 2, 1]
您正在使用新引用创建新列表y,这不会影响旧列表。
答案 1 :(得分:1)
之前已经回答过,但长话短说:
x = x + y
表示基本上将x+y
分配给x
(因此x
引用新对象)
x += y
表示将y
添加到x
(因此x
仍会引用相同的对象)