- 赋值
- 浅拷贝
- 深拷贝
赋值:本质上就是对象的引用
l1 = [1,2,3,4,5,6] print(l1) l2 = l1 print(l1,l2) l2[2] = 'asd' print(l1,l2)
在运行以上代码时,会发现l1和l2的值总是一致的
开始只是对l1进行了赋值,后面把l1赋值给了l2
按照正常理解,两个内容应该互不相关,但实际上的输出却总是一致
这是因为l2 = l1赋值后,l2的内容也是引用的l1这个对象,所以两个内容的输出才总是一致的
为了让赋值后的l1和l2互不冲突,就产生了拷贝
拷贝有深拷贝和浅拷贝
浅拷贝适用于一位列表数据,在面对二维数据时却失去了作用
l3 = [56,96,91,62,26,31,46] l4 = l3.copy() # 刚拷贝完的数据是相同 print(l3,l4) l3[2] = 'asdf' # 在修改完数据后,可以发现,两个数据已经不同了 print(l3,l4) # 二维列表 l5 = [1,2,3,[5,6,7],8,9] l6 = l5 print(l5,l6) # 修改列表的一维数据 l5[1] = 111 # 这时可以发现,l5和l6的数据在修改的地方是不同的 print(l5,l6) l5[3][0] = 20 # 这里修改了二维部分的一个数据,可以发现修改后的部分仍然相同的 print(l5,l6)深拷贝
在拷贝多维数据时,为了不影响原数据,需要用到深拷贝
# 使用深拷贝需要导入一个拷贝的模块 import copy l7 = [1,2,3,[4,5,6],7,8,9] l8 = copy.deepcopy(l7) print(l7,l8) l7[3][1] = 'asd' print(l7,l8)



