1.赋值: 只是复制了新对象的引用,不会开辟新的内存空间。
2.浅拷贝: 创建新对象,其内容是原对象的引用,view
3.深拷贝:只有一种形式,copy模块中的deepcopy函数。
和浅拷贝对应,深拷贝拷贝了对象的所有元素,包括多层嵌套的元素。
深拷贝出来的对象是一个全新的对象,不再与原来的对象有任何关联。
import numpy as np
a=np.array([12,10,11,13,21,10,1005,1,2,3,19])
print("a结果:",a)
a结果: [ 12 10 11 13 21 10 1005 1 2 3 19]
b=a
print("b结果:",b)
b结果: [ 12 10 11 13 21 10 1005 1 2 3 19]
#赋值
a[1]=999
print("a,b结果:")
print("a:",a)
a: [ 12 999 11 13 21 10 1005 1 2 3 19]
print("b:",b)
b: [ 12 999 11 13 21 10 1005 1 2 3 19]
#浅拷贝,内容互相影响
c=a.view()
print(id(a),id(c))
a[1]=1000
c[1]=1999
print("a,b结果:")
print(a)
print(c)
print(id(a),id(c))
结果如下:
395076666992395079245536
a,b结果:
[ 12 1999 11 13 21 10 1005 1 2 3 19]
[ 12 1999 11 13 21 10 1005 1 2 3 19]
#深拷贝
d=a.copy()
print(a,d)
a[1]=2999
d[1]=3999
print("a,b深拷贝结果:")
print(a)
print(d)
a,b深拷贝结果:
[ 12 2999 11 13 21 10 1005 1 2 3 19]
[ 12 3999 11 13 21 10 1005 1 2 3 19]
#结果完全独立,互不影响。