Python之浅谈深浅拷贝

深浅拷贝

拷贝

s=['tim','age']
s2=s
#这里的s2列表指向与s相同的id

当s2为s的拷贝对象时,s内的可变类型变化,s2变化;s内的不可变类型变化,s2变化

浅拷贝

import copy
li=[1,12,36,[5,6,]]
lis=copy.copy(li)
li[0]=5
print(li,lis)
print(id(li),id(lis))
li[-1]=6
print(li,lis)
print(id(li[-1]),id(lis[-1]))

[5, 12, 36, [5, 6]] [1, 12, 36, [5, 6]]
2598201026568 2598201027848
[5, 12, 36, 6] [1, 12, 36, [5, 6]]
1755821280 2598201026376

当lis为li的浅拷贝对象时,li内的可变类型变化,lis变化;li内的不可变类型变化,lis不变化

深拷贝

import copy
li=[1,12,36,[5,6,]]
lis=copy.deepcopy(li)
li[0]=5
print(li,lis)
print(id(li),id(lis))
li[-1]=6
print(li,lis)
print(id(li[-1]),id(lis[-1]))

[5, 12, 36, [5, 6]] [1, 12, 36, [5, 6]]
1781247010824 1781247012104
[5, 12, 36, 6] [1, 12, 36, [5, 6]]
1755821280 1781247012040

当lis为li的浅拷贝对象时,li内的可变类型变化,lis不变化;li内的不可变类型变化,lis不变化

猜你喜欢

转载自www.cnblogs.com/MrYang161/p/11312946.html
今日推荐