如果我定义两个变量
puzzle = [[1, 2, 3]]
test_puzzle = puzzle
修改
test_puzzle
时,更改也会应用到 puzzle
。我不想修改原来的 puzzle
变量。如何在不修改原始列表的情况下创建重复列表?
我在这里找到了解决方案: python:对复制变量的更改会影响原始变量
我尝试了
test_puzzle = puzzle[:]
、test_puzzle = list(puzzle)
和test_puzzle = puzzle.copy()
,但都导致了同样的问题。
我的代码:
puzzle = [[1, 2, 3]]
test_puzzle = puzzle
test_puzzle[0][1] = 7
print(puzzle)
print(test_puzzle)
我的输出:
-> [[1, 7, 3]]
-> [[1, 7, 3]]
[:]
或 copy
不会将列表复制到外部列表中
因此您要更改相同的对象,但您可以使用
deepcopy
来修复该问题,或者简单地复制其中的列表:
from copy import deepcopy
puzzle = [[1, 2, 3]]
test_puzzle = deepcopy(puzzle)
# or
# test_puzzle = [x[:] for x in test_puzzle]
test_puzzle[0][1] = 7
print(puzzle)
print(test_puzzle)
将会导致
[[1, 2, 3]]
[[1, 7, 3]]