Python列表 - L1 + = [5]和L1 = L1 + [5]的不同结果

时间:2014-04-07 18:47:47

标签: python list

我已经了解了列表的可变性,并试图了解它是如何工作的。 但是,我发现了一些新的东西:

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 + =是如何给出不同的结果吗?

2 个答案:

答案 0 :(得分:1)

当你这样做时:

y = y+ [3, 2, 1] 

您正在使用新引用创建新列表y,这不会影响旧列表。

答案 1 :(得分:1)

之前已经回答过,但长话短说:

x = x + y表示基本上将x+y分配给x(因此x引用新对象)

x += y表示将y添加到x(因此x仍会引用相同的对象)