我将“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”。
请帮忙。谢谢。
tempList
和haystack
只是绑定到同一个list
的两个名称。 复制:这是Python中列表和独立变量之间行为差异的典型示例。这是因为
tempList = haystack
没有将haystack值复制到tempList
,而是将haystack
的地址分配给tempList
。也就是说,现在你用两个名字来指代内存中的同一个地方。所以修改一个就会修改另一个。要复制值,可以执行tempList = list(haystack)
。您不是在创建列表的副本;您只是在创建对列表的第二个引用。
如果要创建临时(浅层)副本,请明确执行以下操作:
或者使用完整的列表片段:
当调用对象上的
.extend()
时,可以在适当的位置修改可变列表,因此对该列表的所有引用都将看到更改。另一种方法是使用串联而不是扩展来创建新列表:
现在
haystack
变量已重新绑定到新列表;tempList
仍然引用旧列表。相关问题 更多 >
编程相关推荐