请查看以下代码:
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' to list2。看起来分配list2 = list1将list2上的指令传送给list1。
首先,我想了解为什么会这样,其次,有没有办法让变量B与变量A相同但是B上的任何指令(重新赋值)例如),将修改B而不是A?
显然,我可以做到
list1 = [1,2,3]
list2 = [1,2,3]
list2.append(4)
得到我想要的东西。但是如果说list1是一个(numpy)100x100数组怎么办?然后,我宁愿有办法复制' list1到另一个变量,而不是手动重写它。
我不是一位经验丰富的程序员,而且对Python来说相当新手。我也试图尽可能简单地提出这个问题,但在这个网站上找不到任何直接回答的问题。请将我重定向到我可能错过的任何内容,并提前接受我的道歉。谢谢!
答案 0 :(得分:0)
这样可行。
list1 = [1,2,3]
list2 = list1[:]
现在,list2.append(4)
--->不会影响list1
。
您的第一次尝试只是复制引用,以便list1
和list2
引用相同的变量。