赋值
#赋值,指向同一内存地址 l1 = [1,2,3,4,5] l2 = l1 print(l1,l2) print(id(l1),id(l2))
浅copy
#浅copy,第一层互相独立,创建了新的内存地址,第二层之后,都指向同一地址 l1 = [1,2,3,[4,5,6]] l2 = l1.copy() print(l1,id(l1)) print(l2,id(l2)) l1.append('第一层')#第一层改变,copy不会改变 print(l1) print(l2) l1[3].append('第二层')#第二层开始,都是公用的,指向同一个地址,改一个都会变 print(l1,id(l1[3])) print(l2,id(l2[3]))
深copy
#深copy,两个完全独立,改变任意一个的元素(无论是多少层),另一个绝不会改变。 import copy#先引入模块 l1 = [1,2,3,[4,5,6]] l2 = copy.deepcopy(l1)# print(l1,id(l1)) print(l2,id(l2)) l1[1] = '第一层test' print(l1,id(l1)) print(l2,id(l2)) l1[3].insert(0,'第二层test') print(l1,id(l1)) print(l2,id(l2))
可以看出,完全独立。