python深浅拷贝

一:浅拷贝

import copy
l1 = [1, 2, 3, [4, 5, 6]]
l2 = copy.copy(l1)
l2[3][0] = 3  # 修改二级列表的元素
l2[1] = 1

print(l1)
print(l2)  

结果:

[1, 2, 3, [3, 5, 6]]
[1, 1, 3, [3, 5, 6]]

 

二级列表的会随着任意一方的修改而共同改变,l1 的 二级列表如果优先改变 那么 l2 的二级列表也会跟着改变,同理,l2 优先改变也是如此

另外,一级列表的数据是独立的,它会重新开辟一块内存空间并拷贝一级列表的数据元素,二级列表只是引用并不会拷贝

 

 

二:深拷贝

import copy
l1 = [1, 2, 3, [4, 5, 6]]
l2 = copy.deepcopy(l1)
l2[3][0] = 3  # 修改二级列表的元素
l2[1] = 1

print(l1)
print(l2)

#结果:

[1, 2, 3, [4, 5, 6]]
[1, 1, 3, [3, 5, 6]]



深拷贝是重新开辟内存空间并将数据完完全全的拷贝出来一份,l1和l2 不会互相影响

 

posted @ 2018-07-30 11:49  lei-jia-ming  阅读(127)  评论(0编辑  收藏  举报