我刚开始使用python,遇到了一些奇怪的事情。
下面的代码将x=1和y=2的坐标分配给变量test。test2变量为自己分配与TEST值相同的值,然后test2的x值被更改为旧的x值减1。但是,当执行最后一部分时,它不仅从test2中的x值减去1,还对test变量中的x值执行相同的操作。
test = [1,2];
test2 = test;
test2[1] = test2[1] - 1;我发现执行以下操作很好,但是我仍然不明白为什么第一个方法改变了测试值和test2值。
test = [1,2];
test2 = test;
test2 = [test2[0] -1 ,test2[1]];有没有人能解释一下为什么会这样。
谢谢你,TheLorax
发布于 2010-08-27 10:28:46
这是因为当您执行test2 = test时,您并不是在复制列表的内容,而是简单地向test2分配一个对原始列表的引用。因此,对test2的任何更改也会影响test。
正确的方法是使用复制模块中的deepcopy() (如果可以进行浅层复制,则使用copy()。
import copy
test2 = copy.deepcopy(test) # deep copy
test2 = copy.copy(test)) # shallow copy
test2 = test[:] # shallow copy using slices有关更深入的解释以及复制列表的其他方法,请参阅this page。
https://stackoverflow.com/questions/3580913
复制相似问题