全局变量被局部变量修改?

Global variable gets modified by local variable?

我在 python 3.7.9.

-我需要将列表中的一些项目复制到另一个列表中。

-然后我需要对我的新列表进行计算而不改变原始列表。

但是无论我做什么,我的原始列表都会进行与新列表相同的修改。

有人能解释一下为什么吗?

感谢您的回复

调试模式:

这种现象在python中被称为浅拷贝。

基本上,

 reduite=mat[1:]

正在引用 mat 的内部对象(又是数组),因此修改副本数组反映在原始数组上。

使用deepcopy解决这个问题。

在您的代码中,您将进行分配:

reduite = mat[1:]

这仅 绑定 reduitemat 的元素。

换句话说,变量现在引用内存中的相同对象,这就是为什么更改一个对象会更改另一个对象(另请参阅 Assignment statements 上的参考)。

由于 mat[1:] 是列表的列表,您最好的选择可能是在赋值时使用 copy.deepcopy()(另请参阅 documentation of copy)。

This post 还包含对各种复制方法的一些很好的解释。