最近遇到一个极坑的问题,我在使用字典时,没有考虑到这个问题,导致我debug了两天。
import numpy as np
b = {0: np.array([0, 1], 1:2}
a = b[0] # 这里a和b[1]指向相同的内存地址,浅复制,容易出错
a[0] = 3
print(b) # 输出结果是{0: [3, 1], 1:2}
c = b[1] # 这里c和b[1]指向相同的内存地址,浅复制
c = 4 # 这里c是重新赋予新的变量,指向新的内存地址
print(b) # 输出结果是{0: [3, 1], 1:2}
# 这里c和b[1]指向不同的内存地址
print(id(c))
print(id(b[1]))