我将'haystack‘保存在一个临时变量中,但当我修改'haystack’时,临时变量也会改变。为什么?帮帮忙好吗?这很正常吗?在PHP中,我没有这个问题。
# -*- coding:utf-8 -*-
haystack = [1,'Two',3]   
tempList = haystack   
print 'TempList='    
print tempList   
iterable = 'hello'  
haystack.extend(iterable)   
print 'TempList='   
print tempList控制台返回
TempList=
[1, 'Two', 3]
TempList=
[1, 'Two', 3, 'h', 'e', 'l', 'l', 'o']但是我没有修改变量'tempList‘。
救命啊,please.Thanks。
发布于 2013-06-08 08:35:44
您并不是在创建列表的副本;您只是创建了对它的第二个引用。
如果要创建临时(浅层)副本,请明确执行以下操作:
tempList = list(haystack)或者使用完整列表切片:
tempList = haystack[:]在对象上调用.extend()时,您可以就地修改可变列表,以便对该列表的所有引用都能看到更改。
另一种方法是使用连接而不是扩展来创建一个新列表:
haystack = [1,'Two',3]   
tempList = haystack  # points to same list
haystack = haystack + list(iterable)  # creates a *new* list object现在,haystack变量被重新绑定到一个新列表;tempList仍然引用旧列表。
https://stackoverflow.com/questions/16994799
复制相似问题