This question already has answers here:
Copying nested lists in Python
                                
                                    (2个答案)
                                
                        
                                5年前关闭。
            
                    
我正在制作一个程序,该程序需要可编辑的临时数组,并且不会影响原始数组。但是,每当我运行该函数并对其进行测试时,它都会像这样编辑实际的数组:

x = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
y = copying(x)
y[0][0] = 1
print(x)
[[1, 0, 0], [0, 0, 0], [0, 0, 0]]


这是函数:

def copying(array):
    temp = []

    for i in array:
        temp.append(i)
    return temp


该函数适用于平面列表,但数组条目不起作用。我应该使用替代方法吗? (我尝试过list()和copy())

最佳答案

您需要使用function deepcopy from copy module


  copy.deepcopy(x)
  
  返回x的深层副本。


此功能正在复制所有内容,甚至包括子元素(以及子子元素以及...您知道我认为的)。您的简短示例已更正:

>>> from copy import deepcopy
>>> x = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> y = deepcopy(x)
>>> y[0][0] = 1
>>> x
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> y
[[1, 0, 0], [0, 0, 0], [0, 0, 0]]

10-07 19:12
查看更多