我有一个表格清单v = [0,0,0,0,0,0,0,0,0]我在代码中的某个地方vec=vvec[5]=5这会同时改变v和vec:>>> print vec[0, 0, 0, 0, 0, 5, 0, 0, 0]>>> print v[0, 0, 0, 0, 0, 5, 0, 0, 0]为什么要v彻底改变?
3 回答

潇潇雨雨
TA贡献1833条经验 获得超4个赞
为什么v会发生变化?
vec和v都是指针。当编码vec = v时,您将v地址分配给vec。因此,更改v中的数据也会“更改” vec。
如果要使用两个不同的数组,请使用:
vec = list(v)

GCT1015
TA贡献1827条经验 获得超4个赞
为了节省内存,除非另有明确说明,否则vec将指向同一阵列。
复制这样的数组 vec=v[:]
在函数之间传递数据时,指向数组而不是复制数组的功能非常有用。如果您有此功能
def foo():
return someBigArray
你想用someBigArray做点什么
def bar():
arr = foo()
processArray(arr)
您不需要浪费时间等待程序将someBigArray中的所有数据复制到arr,因此默认行为是给arr一个指向someBigArray的指针。
添加回答
举报
0/150
提交
取消