Python中的赋值、浅拷贝、深拷贝之间的区别

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]

#结果完全独立,互不影响。

猜你喜欢

转载自blog.csdn.net/wangxihe2012/article/details/80115966