import numpy as np
赋值(对象引用)
a = np.array([1, 2, 3, 4])
a
array([1, 2, 3, 4])
b = a
b
array([1, 2, 3, 4])
a[2] = 0
a
array([1, 2, 0, 4])
b
array([1, 2, 0, 4])
b[1] = 0
a
array([1, 0, 0, 4])
c = b[1:3]
c
array([0, 0])
c[1] = 2
c
array([0, 2])
a
array([1, 0, 2, 4])
b
array([1, 0, 2, 4])
copy(对象拷贝,浅拷贝)
a = np.array([1, 2, 3, 4])
b = a.copy()
b
array([1, 2, 3, 4])
b[0] = 0
b
array([0, 2, 3, 4])
a
array([1, 2, 3, 4])
deepcopy(对象拷贝,深拷贝)
a = [1, 2, 3, 4, ['a', 'b']]
d = copy.deepcopy(a)
d
[1, 2, 3, 4, ['a', 'b']]
复制之间的区别
import copy
a = [1, 2, 3, 4, ['a', 'b']]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(5)
a[4].append('c')
print('\t\t:a = ', a)
print('对象引用\t:b = ', b)
print('copy\t\t:c = ', c)
print('deepcopy\t:d = ', d)
:a = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
对象引用 :b = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
copy :c = [1, 2, 3, 4, ['a', 'b', 'c']]
deepcopy :d = [1, 2, 3, 4, ['a', 'b']]
- 对象引用只是引用了之前对象爱的索引,当原对象与赋值后的对象发生改变时,另一个对象也会发生改变
- copy 只拷贝父对象,不会拷贝对象的内部的子对象。也就是只拷贝一维中的内容,如果一维中是列表,则是引用列表的对象而不是值
- deepcopy 深拷贝 拷贝对象的值及其子对象的值