首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python 2.7 - memory中使用临时变量

如何在Python 2.7 - memory中使用临时变量
EN

Stack Overflow用户
提问于 2013-06-08 08:33:34
回答 3查看 9.6K关注 0票数 4

我将'haystack‘保存在一个临时变量中,但当我修改'haystack’时,临时变量也会改变。为什么?帮帮忙好吗?这很正常吗?在PHP中,我没有这个问题。

代码语言:javascript
运行
复制
# -*- coding:utf-8 -*-

haystack = [1,'Two',3]   
tempList = haystack   
print 'TempList='    
print tempList   
iterable = 'hello'  
haystack.extend(iterable)   
print 'TempList='   
print tempList

控制台返回

代码语言:javascript
运行
复制
TempList=
[1, 'Two', 3]
TempList=
[1, 'Two', 3, 'h', 'e', 'l', 'l', 'o']

但是我没有修改变量'tempList‘。

救命啊,please.Thanks。

EN

Stack Overflow用户

回答已采纳

发布于 2013-06-08 08:35:44

您并不是在创建列表的副本;您只是创建了对它的第二个引用。

如果要创建临时(浅层)副本,请明确执行以下操作:

代码语言:javascript
运行
复制
tempList = list(haystack)

或者使用完整列表切片:

代码语言:javascript
运行
复制
tempList = haystack[:]

在对象上调用.extend()时,您可以就地修改可变列表,以便对该列表的所有引用都能看到更改。

另一种方法是使用连接而不是扩展来创建一个新列表:

代码语言:javascript
运行
复制
haystack = [1,'Two',3]   
tempList = haystack  # points to same list
haystack = haystack + list(iterable)  # creates a *new* list object

现在,haystack变量被重新绑定到一个新列表;tempList仍然引用旧列表。

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

https://stackoverflow.com/questions/16994799

复制
相关文章

相似问题

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