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