Python 深浅copy

import copy

l1 = [10,'a1',[110,111],'ds',]
l2 = copy.copy(l1)  #浅拷贝

print(l1)
print(l2)
l1[1] = 11  #改变L1的值
l1[2][0] = 1111  #改变l1内嵌列表的值
print(l1)
print(l2)
print(id(l1))
print(id(l2))
print(id(l1[2][0]))
print(id(l2[2][0]))


#[10, 'a1', [110, 111], 'ds']
#[10, 'a1', [110, 111], 'ds']
#通过下面的结果对比,发现浅拷贝对于内嵌多层数据类型的操作,如果多层数据类型值改变,浅拷贝的对象也会跟着改变
#[10, 11, [1111, 111], 'ds']
#[10, 'a1', [1111, 111], 'ds']
View Code
import copy

l1 = [10,'a1',[110,111],'ds',]
l2 = copy.deepcopy(l1)

print(l1)
print(l2)
l1[1] = 11  #改变L1的值
l1[2][0] = 1111  #改变l1内层数据的值
print(l1)
print(l2)
print(id(l1))
print(id(l2))
print(id(l1[2][0]))
print(id(l2[2][0]))

#[10, 'a1', [110, 111], 'ds']
#[10, 'a1', [110, 111], 'ds']
#结合上面的例子进行对比发现,对于深层拷贝,内嵌多层的数据类型的值,被改变,不会影响到另一方拷贝或被拷贝的对象
#[10, 11, [1111, 111], 'ds']
#[10, 'a1', [110, 111], 'ds']
View Code

 

posted @ 2017-02-04 12:14  sxlnnnn  阅读(109)  评论(0编辑  收藏  举报