Python列表-L1 + = [5]和L1 = L1 + [5]的不同结果[重复]
Posted
技术标签:
【中文标题】Python列表-L1 + = [5]和L1 = L1 + [5]的不同结果[重复]【英文标题】:Python Lists - different results for L1+=[5] and L1 = L1+[5] [duplicate] 【发布时间】:2014-05-20 04:15:10 【问题描述】:我已经了解了列表的可变性,并试图了解它是如何工作的。 然而,我发现了一些新的东西:
x = [1, 2, 3]
y = x
print x # [1, 2, 3]
y += [3, 2, 1]
print x # [1, 2, 3, 3, 2, 1]
一切正常
但是,如果我将 y += [3,2,1] 替换为 y = 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+= 如何给出不同的结果?
【问题讨论】:
【参考方案1】:当你这样做时:
y = y+ [3, 2, 1]
您正在使用新引用创建一个新列表 y,这不会影响旧列表。
【讨论】:
【参考方案2】:以前有人回答过,但长话短说:
x = x + y
意味着基本上将x+y
分配给x
(所以x
引用了一个新对象)
x += y
表示将y
添加到x
(所以x
仍然引用同一个对象)
【讨论】:
以上是关于Python列表-L1 + = [5]和L1 = L1 + [5]的不同结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章