浅拷贝 shadow copy
仅仅只拷贝对象自身,内部元素引用的其他对象只拷贝一个引用。深拷贝 deep copy
外围和内部元素都拷贝了对象本身。而不是引用。因此深拷贝产生的副本可以随意修改,而不用担心会影响原始值。
c = [[1,2,3],'a',4]d = c.copy()print(d) # 此时d与c输出结果相同d[1] = 'b'print(d) # 此时只更改了d中‘a’ 为‘b’;没有影响到c的值d[0][1] = 'h'print(c)print(d) #此时c,d都被更改!
import copya=[1,2,3]b=[a,a]c=copy.deepcopy(b)id(b[0])==id(c[0]) # Falseid(b[0])==id(b[1]) # Truec[0].append('p')print(c)print(b) #发现c变了,而b没变