更改一个列表也会意外地更改另一个列表

我有一个表格清单


v = [0,0,0,0,0,0,0,0,0]

我在代码中的某个地方


vec=v

vec[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彻底改变?


青春有我
浏览 388回答 3
3回答

潇潇雨雨

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

GCT1015

为了节省内存,除非另有明确说明,否则vec将指向同一阵列。复制这样的数组 vec=v[:]在函数之间传递数据时,指向数组而不是复制数组的功能非常有用。如果您有此功能def foo():  return someBigArray你想用someBigArray做点什么def bar():  arr = foo()  processArray(arr)您不需要浪费时间等待程序将someBigArray中的所有数据复制到arr,因此默认行为是给arr一个指向someBigArray的指针。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python