首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python永久赋值变量

Python永久赋值变量
EN

Stack Overflow用户
提问于 2010-08-27 10:23:16
回答 4查看 1.3K关注 0票数 0

我刚开始使用python,遇到了一些奇怪的事情。

下面的代码将x=1和y=2的坐标分配给变量test。test2变量为自己分配与TEST值相同的值,然后test2的x值被更改为旧的x值减1。但是,当执行最后一部分时,它不仅从test2中的x值减去1,还对test变量中的x值执行相同的操作。

代码语言:javascript
运行
复制
test = [1,2];
test2 = test;
test2[1] = test2[1] - 1;

我发现执行以下操作很好,但是我仍然不明白为什么第一个方法改变了测试值和test2值。

代码语言:javascript
运行
复制
test = [1,2];
test2 = test;
test2 = [test2[0] -1 ,test2[1]];

有没有人能解释一下为什么会这样。

谢谢你,TheLorax

EN

Stack Overflow用户

发布于 2010-08-27 10:28:46

这是因为当您执行test2 = test时,您并不是在复制列表的内容,而是简单地向test2分配一个对原始列表的引用。因此,对test2的任何更改也会影响test

正确的方法是使用复制模块中的deepcopy() (如果可以进行浅层复制,则使用copy()

代码语言:javascript
运行
复制
import copy
test2 = copy.deepcopy(test) # deep copy

test2 = copy.copy(test)) # shallow copy

test2 = test[:] # shallow copy using slices

有关更深入的解释以及复制列表的其他方法,请参阅this page

票数 3
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3580913

复制
相关文章

相似问题

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