python列表浅拷贝

2019-03-04  本文已影响0人  abrila

列表的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]

上一篇 下一篇

猜你喜欢

热点阅读