首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对重复变量的更改修改原始变量

对重复变量的更改修改原始变量
EN

Stack Overflow用户
提问于 2022-06-15 11:42:49
回答 1查看 24关注 0票数 2

如果我定义了一个名为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(),但是都导致了同样的问题。

代码语言:javascript
复制
    puzzle = [[1, 2, 3]]
    test_puzzle = puzzle
    test_puzzle[0][1] = 7
    print(puzzle)
    print(test_puzzle)```
代码语言:javascript
复制
-> [[1, 7, 3]]
-> [[1, 7, 3]]
代码语言:javascript
复制
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-15 11:47:14

[:]copy不复制外部列表中的列表

因此,您要更改相同的对象,但可以使用deepcopy修复该对象,或者简单地将列表复制到内部:

代码语言:javascript
复制
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)

会导致

代码语言:javascript
复制
[[1, 2, 3]]
[[1, 7, 3]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72630732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档