基于旧数组创建的新数组,id不同,但是更改新数组会更改旧数组(python)

问题描述 投票:0回答:1

下午好!

以下是我的代码段:

density_new = density_old[:,:,40:55]

for i in range(0,16):
    density_new[:,:,i] = 1020

现在,这应该只更改density_new,因为通过我们分配density_new的方式,它具有自己的内存ID(我在两个变量上都使用python的id()命令进行了双重检查)。问题是,当我运行代码时,它会同时更改density_old和density_new,并且由于它们具有不同的ID,所以我不知道为什么会这样。任何帮助,将不胜感激。

python pointers
1个回答
0
投票

当您将列表复制到另一个列表时,python将使它们引用相同的列表,因此在更新一个列表时,另一个将自动更新,但是使用list()函数复制列表将避免此技巧。

所以就试试这个吧:

density_new = list(density_old[:,:,40:55])
© www.soinside.com 2019 - 2024. All rights reserved.