如果我定义了一个名为puzzle = [1,2,3]的变量,然后在修改test_puzzle时再创建一个名为test_puzzle = puzzle的变量,那么更改也将应用于puzzle。我不想修改原始的puzzle变量,我是否可以在不修改原始值和不需要循环的情况下创建一个副本?
我在这里找到了解决方案:python: changes to my copy variable affect the original variable
在这里:How do I clone a list so that it doesn't change unexpectedly after assignment?
我试着做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]]发布于 2022-06-15 11:47:14
[:]或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]]https://stackoverflow.com/questions/72630732
复制相似问题