我虽然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
的简写?这是人们所期望的......对此有什么合理的解释?
答案 0 :(得分:1)
a+=b
是a.extend(b)
的快捷方式,而不是a=a+b
..正如您所说,它创建了一个新列表。