我在python代码中有一个名为board
的int列表。我不知道,如果它被修改了,所以我有代码
self.oldboard = list(self.board)
#here is board modified, if it is possible
if not self.oldboard == self.board:
#this should execute only when board was modified
但oldboard
总是等于board
,当我修改board
时,它会修改oldboard
。如何oldboard
只复制board
,而不是参考?
答案 0 :(得分:3)
通过切片方法复制列表时(类似于您当前正在执行的操作):
new_list_copy = old_list[:]
你只会获得内容的“浅层”副本。这不适用于包含列表的列表(“嵌套列表”)。
如果您尝试复制嵌套列表,Pythonic解决方案是使用copy
模块中的deepcopy
:
import copy
new_list_copy = copy.deepcopy(old_list)
答案 1 :(得分:0)
整数是不可变的。我建议您熟悉浅层和深层复制操作的概念,您可以在Python Docs here 中找到它们。
在你的情况下,你很可能需要使用deepcopy
,因为我猜你有几个嵌套列表。