赋值,浅拷贝,深拷贝自己的理解
赋值
a=[1,2,3,4,[35,44,66]] b=a b[0]=11 print(a) print(b) #[11, 2, 3, 4, [35, 44, 66]] #[11, 2, 3, 4, [35, 44, 66]]
浅拷贝
import copy a=[1,2,3,4,[35,44,66]] b=copy.copy(a) b[0]=11 print('a',a) print('b',b) b[-1][0]=22 print('a',a) print('b',b) #a [1, 2, 3, 4, [35, 44, 66]] #b [11, 2, 3, 4, [35, 44, 66]] #a [1, 2, 3, 4, [22, 44, 66]] #b [11, 2, 3, 4, [22, 44, 66]]
拷贝了一份a给b,修改b的索引为1的元素,b变了,a没有变,因为数字是不可变的,修改b索引为-1的元素里的元素,发现a变了,因为列表是可变的
深拷贝
import copy a=[1,2,3,4,[35,44,66]] b=copy.deepcopy(a) b[0]=11 print('a',a) print('b',b) b[-1][0]=22 print('a',a) print('b',b)
#a [1, 2, 3, 4, [35, 44, 66]]
#b [11, 2, 3, 4, [35, 44, 66]]
#a [1, 2, 3, 4, [35, 44, 66]]
#b [11, 2, 3, 4, [22, 44, 66]]
深拷贝是完全复制了一份,对a进行深拷贝给b,那么不管怎么改变b的元素和它元素中的子元素,a的元素和元素中的子元素都不会变