不理解python pop如何改变多个变量
我相信这应该是我忽略了什么简单的东西,但我希望有人能给我解释一下:
origList = [1, 2, 3, 4, 5, 6, 7, 8]
def test(inputList):
while range(len(inputList)):
inputList.pop()
altList = origList
test(altList)
print 'origList:', origList # prints origList: []
print 'altList:', altList # prints origList: []
我以为我明白list.pop()这个方法,但我不明白的是,为什么当我只是从另一个列表中'弹出'元素时,原来的列表也会被修改呢……
4 个回答
2
这是因为当你写
altList = origList
时,你实际上是在把altList的地址指向origList的地址(因为在Python中,一切都是对象)。简单来说,这里的相等意味着“让这两个变成同一个对象”,而不是让它们的值相同。
3
7
在Python中,所有东西都是引用。也就是说,它们其实指向的是同一个列表。
altList = origList[:]