无法复制列表并修改副本而不修改原始列表

时间:2018-05-28 12:53:26

标签: python python-3.x list copy

我正在尝试复制矩阵并修改它而不修改原始矩阵

我知道我不能只做

new = old

否则,python不会复制new引用的列表。我们刚刚创建了一个旧标签,并将其附加到new指向的列表中。 我尝试过像

这样的方法
new = list(old)
new = old[:]
new = old.copy()

即便如此,它也不起作用。

我的代码发生的地方是:

mat = []
my_inputs()
for a in range(n):
    gen = mat[:]
    for l in range(len(gen)):
        for c in range(len(gen[0])):
            if mat[l][c] == " " and cna([l, c], mat) == 3:
                gen[l][c] = "@"
            elif mat[l][c] == "@" and cna([l, c], mat) >= 4:
                gen[l][c] = " "

顺便说一下,这些列表实际上是矢量。

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用deepcopyhttps://docs.python.org/3.6/library/copy.html#copy.deepcopy

from copy import deepcopy

test = [list(range(3))]

test_copy = test.copy()
test_deepcopy = deepcopy(test)

test_copy[0][0] = 21
test_deepcopy[-1][-1] = 42

print(f'Original: {test}')
print(f'With copy: {test_copy}')
print(f'With deepcopy: {test_deepcopy}')

>>>

Original: [[21, 1, 2]]
With copy: [[21, 1, 2]]
With deepcopy: [[0, 1, 42]]

答案 1 :(得分:-2)

试试这个代码段

newList.clear(); //清除列表

newList.addAll(OldList); //将旧列表的所有数据添加到新列表