Python list + 运算符的用法

Python + operator used with list type

本问题已经有最佳答案,请猛点这里访问。

假设我的列表A是[1,2,3]指向地址53367992

1
2
3
>>> a = [1,2,3]
>>> id(a)
53367992

现在,当我将[9]添加到这个列表中时,我理解地址的变化,现在我指向53368552

1
2
3
4
5
>>> a = a + [9]
>>> a
[1, 2, 3, 9]
>>> id(a)
53368552

在下面的例子中,我不理解为什么a在向a添加[4]之后仍然指向相同的地址。

1
2
3
4
5
6
7
8
>>> a = [1,2,3]
>>> id(a)
53361720
>>> a += [9]
>>> a
[1, 2, 3, 9]
>>> id(a)
53361720

你们能解释一下A=A+[9]之间的区别吗?而A+=[9](这怎么会起到附加作用)操作在列表中?


列表是可变的。像.append()+=__iadd__这样的方法会改变列表本身(在适当的位置),并且不会创建新的实例。

另一方面,+(__add__将返回一个新的实例。