深浅拷贝

复制:赋值后完全一样,指向内存空间。
浅拷贝:嵌套型数据类型第一层拷贝后是完全是两份,改变其中一个

l1 = [1,2,3,['barry','alex']]

  第一步:拷贝l1赋值给l2 l2 = l1.copy()
查看l1与l2的内存地址
现象是l1与l2是完全不一样的两份 print(l1,id(l1)) # [1, 2, 3, ['barry', 'alex']] 2380296895816 print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2380296895048
第二步:修改第一层的数据
现象:内存地址仍然是两份完全不同的 l1[1] = 222 print(l1,id(l1)) # [1, 222, 3, ['barry', 'alex']] 2593038941128 print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2593038941896 第三步:修改内层数据
现象:修改后内存地址仍然一致 l1[3][0] = 'wusir' print(l1,id(l1[3])) # [1, 2, 3, ['wusir', 'alex']] 1732315659016 print(l2,id(l2[3])) # [1, 2, 3, ['wusir', 'alex']] 1732315659016


深拷贝:拷贝后无论多少层都一样

l1 = [1,2,3,['barry','alex']]

l2
= l1.copy() print(l1,id(l1)) # [1, 2, 3, ['barry', 'alex']] 2380296895816 print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2380296895048
l1[1] = 222
print(l1,id(l1)) # [1, 222, 3, ['barry', 'alex']] 2593038941128
print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2593038941896
 
l1[
3][0] = 'wusir' print(l1,id(l1[3])) # [1, 2, 3, ['wusir', 'alex']] 1732315659016 print(l2,id(l2[3])) # [1, 2, 3, ['wusir', 'alex']] 1732315659016

猜你喜欢

转载自www.cnblogs.com/wanghuaqiang/p/8987644.html
今日推荐