深浅copy
1 # copy 2 # 在Python中对象的赋值其实就是对象的引用。当创建一个对象,把它赋值给另一个变量的时候,python并没有拷贝这个对象,只是拷贝了这个对象的引用而已。 3 # 赋值: 不会产生新对象,与拷贝没关系。 4 # 浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复制 5 # 深拷贝:外围和内部元素都进行了拷贝对象本身,而不是引用。也就是,把对象复制一遍,并且该对象中引用的其他对象我也复制。 6 l1 = [1, 2, 3] 7 l2 = l1.copy() 8 print(l1, l2) 9 print(id(l1), id(l2)) 10 l2.append('a') 11 print(l1, l2) 12 l1 = [1, 2, [4, 5, 6], 3] 13 l2 = l1.copy() 14 print(l1, id(l1)) 15 print(l2, id(l2)) 16 l1.append('a') 17 print(l1, l2) 18 l1[2].append('a') 19 print(l1, l2) 20 print(id(l1[2])) 21 print(id(l2[2])) 22 23 # 深copy 24 import copy 25 l1 = [1, 2, [4, 5, 6], 3] 26 l2 = copy.deepcopy(l1) 27 print(l1, id(l1)) 28 print(l2, id(l2)) 29 l1[2].append('a') 30 print(l1, l2) 31 32 # 浅copy 33 l1 = [1, [1], 2, 3, 4] 34 l2 = l1[:] 35 l1[1].append('a') 36 print(l1, l2)