【发布时间】:2015-01-20 15:26:20
【问题描述】:
我最近将一些代码中的错误减少为以下行为的结果:
>>> arr = np.zeros(10)
>>> value = 0
>>> dictionary = {"key":[arr,value]}
>>> dictionary["key"][0]
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
>>> dictionary["key"][1]
0
>>> dictionary["key"][0]+=1
>>> dictionary["key"][1]+=1
>>> dictionary["key"][0]
array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
>>> dictionary["key"][1]
1
>>> arr
array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
>>> value
0
导致:
>>> dictionary["key"][0] is arr
True
>>> dictionary["key"][1] is value
False
这可能是一个愚蠢的问题,但这是什么原因造成的?
【问题讨论】:
-
np.array对象是可变的,int对象不是。添加到整数实际上会创建一个新对象,添加到数组会更新旧对象。
标签: python numpy dictionary variable-assignment