【发布时间】:2021-02-28 09:17:20
【问题描述】:
我在 python 3.7.9 上。
-我需要将列表中的一些项目复制到另一个列表中。
-然后我需要对我的新列表进行计算而不更改原始列表。
但无论我做什么,我的原始列表都会经历与新列表相同的修改。
谁能解释一下为什么?
感谢您的回复
【问题讨论】:
我在 python 3.7.9 上。
-我需要将列表中的一些项目复制到另一个列表中。
-然后我需要对我的新列表进行计算而不更改原始列表。
但无论我做什么,我的原始列表都会经历与新列表相同的修改。
谁能解释一下为什么?
感谢您的回复
【问题讨论】:
【讨论】:
在您的代码中,您正在分配:
reduite = mat[1:]
这仅绑定 reduite 到 mat 的元素。
换句话说,变量现在引用内存中的相同对象,这就是为什么改变一个会改变另一个(另见Assignment statements上的参考)。
由于mat[1:] 是一个列表列表,您最好的选择可能是在分配时使用copy.deepcopy()(另请参阅documentation of copy)。
This post 还包含对各种复制方法的一些很好的解释。
【讨论】: