我正在尝试复制矩阵并修改它而不修改原始矩阵
我知道我不能只做
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] = " "
顺便说一下,这些列表实际上是矢量。
答案 0 :(得分:0)
您是否尝试过使用deepcopy
? https://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); //将旧列表的所有数据添加到新列表