如何重新分配(或修改)使用另一个变量定义的 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
。
您的第一次尝试只是复制引用,这样 list1
和 list2
将引用相同的变量。
请看下面的代码:
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
。
您的第一次尝试只是复制引用,这样 list1
和 list2
将引用相同的变量。