当我运行以下代码时:
import numpy as np
v = np.array([1, 1, 1])
u_list = [v]
for i in range(2):
v += np.array([i, i, i])
u_list.append(v)
return u_list
退货 [array([2, 2, 2]), array([2, 2, 2]), array([2, 2, 2])]
但是,如果我运行相同的代码,v = v + np.array([i, i, i])
则返回第5行[array([1, 1, 1]), array([1, 1, 1]), array([2, 2, 2])]
为什么是这样?
v +=
更改数组到位
import numpy as np
v = np.array([1, 1, 1])
u_list = [v]
print(id(v))
for i in range(2):
v += np.array([i, i, i])
u_list.append(v)
print(id(v))
印刷:
4460459392
4460459392
4460459392
所有数组都具有相同的ID,因此它只是您引用3次的一个数组。
v = v +
制作一个新数组:
v = np.array([1, 1, 1])
u_list = [v]
print(id(v))
for i in range(2):
v = v + np.array([i, i, i])
u_list.append(v)
print(id(v))
印刷:
4462915792
4462918592
4462919072
数组具有不同的ID。因此,它们是不同的对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句