我有一个2D数组,可以在程序中的某些点进行编辑。当我到达程序中的某个点时,我想“取消编辑”数组,就像创建数组时一样。例如
myArray = [[0, 0, 0, 0], # myArray as it is programmed in my script
[0, 2, 0, 2]]
... #Code runs, array is edited.
现在我的数组看起来像...
[[0, 0, 0, 0],
[0, 0, 0, 0]]
然后发生了一个事件,该事件使我想将阵列更改回其原始状态。我可以在程序的开头创建myArray的副本并加载该副本,但这将是非常不切实际的,因为我有数十个相似的数组需要以相同的方式运行,并且我可能需要对数组进行更多的取消编辑操作。一次,这意味着我将有数百份。我实际上不知道有什么方法。
我将采用“写时复制”方法:
original = [[0, 0, 0, 0], [0, 2, 0, 2]]
def edit(my_array):
if id(my_array) == id(original):
my_array = original.copy()
# ... edit the array
def reset(my_array):
my_array = original
其中my_array
是可以编辑的实际工作副本,并且用户之间不同。