列表的append
方法以及copy
模块的copy
方法都是浅拷贝。即列表中的项内存地址都是相同的,如下代码。所以改变一个列表中的项,其它浅拷贝的列表里的项也会变。
import copy
list = [1,3,["te",1],4]
list3 = []
list4 = copy.copy(list)
for i in range(0,len(list)):
list3.append(list[i])
print(id(list3[i]))
print(id(list[i]))
print(id(list4[i]))
print(id(list3))
print(id(list))
list[2].append(1)
print(list)
print(list3)
print(list4)
4501461712
4501461712
4501461712
4501461776
4501461776
4501461776
4508760584
4508760584
4508760584
4501461808
4501461808
4501461808
4508769608
4508759432
[1, 3, ['te', 1, 1], 4]
[1, 3, ['te', 1, 1], 4]
[1, 3, ['te', 1, 1], 4]