为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

青春有我 2019-10-22 22:00:43
我有一个表格清单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)


查看完整回答
反对 回复 2019-10-22
?
GCT1015

TA贡献1827条经验 获得超4个赞

为了节省内存,除非另有明确说明,否则vec将指向同一阵列。


复制这样的数组 vec=v[:]


在函数之间传递数据时,指向数组而不是复制数组的功能非常有用。如果您有此功能


def foo():

  return someBigArray

你想用someBigArray做点什么


def bar():

  arr = foo()

  processArray(arr)

您不需要浪费时间等待程序将someBigArray中的所有数据复制到arr,因此默认行为是给arr一个指向someBigArray的指针。


查看完整回答
反对 回复 2019-10-22
  • 3 回答
  • 0 关注
  • 386 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信