当我执行以下语句时(我使用交互式 shell),会得到以下结果:
但是当我用 L=L+[4] 替换 L.append(4) 时,会得到以下结果:
L=[1,2,3]
K=L
L.append(4)
L
[1,2,3,4]
K
[1,2,3,4]
但是当我用 L=L+[4] 替换 L.append(4) 时,会得到以下结果:
L
[1,2,3,4]
K
[1,2,3]
这是一种引用吗?为什么会发生这种情况?
我注意到的另一个有趣的事情是,L+=[4] 的行为类似于 .append,这有点奇怪,因为我认为它应该像 L = L + [4] 那样。
如果能对此进行澄清将不胜感激。
谢谢。
+=
很奇怪。例如,a = (1, 2); a += (2,)
会得到(1, 2, 3)
!这正好与列表的情况相反,它会就地修改列表。没有办法就地修改元组。这就是为什么很多人更喜欢始终使用a = a + b
形式的原因。 - aaronasterlinga += (3,)
。而且这样允许你就地修改一个(不可变的)元组,有点奇怪。 - efritz+=
运算符没有统一的行为。在某些情况下,它等同于a = a + b
,而在其他情况下(列表)则完全不同。在大多数语言中,它总是等同于a = a + b
。 - aaronasterling