Python的+ =运算符和列表

时间:2014-02-06 13:45:47

标签: python

我虽然a += b只是a = a + b的捷径。看起来并不完全。这是一个例子:

>>> a = [1, 2, 3]
>>> b = a
>>> b += [4, 5, 6]
>>> b
[1, 2, 3, 4, 5, 6]
>>> a # is also changed
[1, 2, 3, 4, 5, 6]

但这可以按预期工作:

>>> a = [1, 2, 3]
>>> b = a
>>> b = b + [4, 5, 6]
>>> b
[1, 2, 3, 4, 5, 6]
>>> a # not changed
[1, 2, 3]

现在,我了解当我执行b = a时,b引用与a相同的列表,如果我在b上执行某些操作,则会自动“应用“a(因为它们都指向同一个列表,而当我b = b + [4, 5, 6]时,会创建一个新列表,然后分配给b,但我的问题是......为什么这种区别?我的意思是,a += b不应该是a = a + b的简写?这是人们所期望的......对此有什么合理的解释?

1 个答案:

答案 0 :(得分:1)

a+=ba.extend(b)的快捷方式,而不是a=a+b ..正如您所说,它创建了一个新列表。