【问题标题】:Copying lists: editing copy without changing original [duplicate]复制列表:编辑副本而不更改原件[重复]
【发布时间】:2014-07-06 18:31:15
【问题描述】:

我正在制作一个程序,该程序需要和可编辑的临时数组,不会影响原始数组。但是,每当我运行该函数并对其进行测试时,它都会像这样编辑实际的数组:

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())

【问题讨论】:

    标签: python arrays


    【解决方案1】:

    您需要使用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]]
    

    【讨论】:

      猜你喜欢
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      相关资源
      最近更新 更多