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 深拷貝 拷貝對象的值及其子對象的值