python 中list的深浅拷贝
# example1
a = [1, [2, 3]]
b = a
b[0] = 999
b[1][0] = 999
print("a: ", a)
print("b: ", b)
此种情况只是简单的赋值,a和b均指向同一个地址的值
# example2
import copy
a = [1, [2, 3]]
b = a.copy()
b[0] = 999
b[1][0] = 999
print("a: ", a)
print("b: ", b)
此时为浅拷贝, 改变b中的值不会改变a中的值,但改变b中的list时,a中的list值会随之改变,即浅拷贝下,list中的list的均为指向同一地址的值。
# example3
import copy
a = [1, [2, 3]]
b = copy.deepcopy(a)
b[0] = 999
b[1][0] = 999
print("a: ", a)
print("b: ", b)
此时为深拷贝,改变b不影响a,同理,改变a不影响b
python numpy中的拷贝
# example4
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = a
b[0][0] = 999
print("a: ", a)
print("b: ", b)
直接赋值和list的效果一样,a和b均指向同一个地址的值
# example5
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = a.copy()
b[0][0] = 999
print("a: ", a)
print("b: ", b)
这里和python list中的区别是copy直接是深拷贝,a、b互不影响