Python使列表复制,而不是引用

Python使列表复制,而不是引用,python,Python,我在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时,它会修改o

我在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
,而不是参考?

通过切片方法复制列表时(类似于您当前所做的操作):

你只能得到一份“浅薄”的内容。这不适用于包含列表的列表(“嵌套列表”)

如果您试图复制嵌套列表,Pythonic解决方案是使用
copy
模块:

import copy
new_list_copy = copy.deepcopy(old_list)

整数是不可变的。我建议您熟悉Python文档中提供的浅拷贝和深拷贝操作的概念

在您的情况下,您很可能需要使用
deepcopy
,因为我猜您有几个嵌套列表

投什么票?我也不明白,因为你的第一个答案不正确,你认为
list(self.board)
在做什么?@padraickenningham我知道第一个选项与OP的做法类似,这就是为什么我添加了“如果你有嵌套列表。”我的想法是,OP可能会看到一个切片副本并感到困惑,其中deepcopy带有一个“use this if”和一个指向文档的链接。
old_list[:]
list(old_list)
完全相同,因此如果这不起作用
old_list[:]
将不起作用
import copy
new_list_copy = copy.deepcopy(old_list)