如何重新分配(或修改)使用另一个变量定义的 Python 变量而不修改两者

How to re-assign (or modify) a Python variable defined using another variable without modifying both

请看下面的代码:

import numpy as np
list1 = [1,2,3]
list2 = list1
list2.append(4)
print list2
print list1

两次打印的结果都是 [1,2,3,4]。我希望 list2 有 [1,2,3,4],list1 有 [1,2,3],因为我只将“4”附加到 list2。看起来赋值 list2 = list1 将 list2 上的指令转移到 list1.

首先,我想了解为什么会这样,其次,有没有办法使变量 B 与变量 A 相同,但 B 上的任何指令(重新 -例如赋值), 会修改 B 但不会修改 A?

显然,我可以做到

list1 = [1,2,3]
list2 = [1,2,3]
list2.append(4)

得到我想要的。但是如果 list1 是一个(numpy)100x100 数组呢?那么我宁愿有办法 'copy' list1 到另一个变量而不是手动重写它。

我不是经验丰富的程序员,对 Python 还是个新手。我也尝试尽可能简单地提出这个问题,但没有在这个网站上找到任何直接回答它的东西。请将我重定向到我可能错过的任何内容,并提前接受我的道歉。谢谢!

这会起作用。

list1 = [1,2,3]
list2 = list1[:]

现在,list2.append(4) ---> 不会影响 list1

您的第一次尝试只是复制引用,这样 list1list2 将引用相同的变量。