python - 复制列表 : editing copy without changing original

标签 python arrays

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

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)

Return a deep copy of 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]]

关于python - 复制列表 : editing copy without changing original,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23726876/

相关文章:

python - Matlab 中的高效矩阵乘法

python - 如何在给定条件下替换数据框列?

python - 使用自动换行创建可调整大小/多行 Tkinter/ttk 标签

c - 访问函数内的二维数组

javascript - 在 JavaScript 中将数组转换为对象

python - 使用循环参数生成变量

python - 如何在 python 中反转嵌套列表中的字符串列表?

php - 数组 - Orderby - 类型

c# - 在数组上找到 N 个连续整数,其总和(连续整数)S 是我有的整数

javascript - 如何从嵌套对象的数组中删除元素? (lodash)