取消编辑数组的创建方式

问题描述 投票:0回答:1

我有一个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的副本并加载该副本,但这将是非常不切实际的,因为我有数十个相似的数组需要以相同的方式运行,并且我可能需要对数组进行更多的取消编辑操作。一次,这意味着我将有数百份。我实际上不知道有什么方法。

python arrays restore
1个回答
0
投票

我将采用“写时复制”方法:

  1. 重置将指向原始数组,该数组是所有对象的单个实例。
  2. 编辑阵列会从原始阵列创建一个副本。然后修改它不会影响原始实例。
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是可以编辑的实际工作副本,并且用户之间不同。

© www.soinside.com 2019 - 2024. All rights reserved.