不理解python pop改变多个变量

2024-05-19 10:29:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我相信这是我忽略了的一些简单的事情,但我希望有人能向我解释以下几点:

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: []

我以为我明白了列表.pop(),但我不明白的是,如果我只是“弹出”备用列表的元素,为什么会修改原始列表。。。在


Tags: test元素列表lendefrangeprints事情
3条回答

因为这句台词:

altList = origList

不创建origList对象的副本。两个名称都将引用同一个基础对象。要创建副本,请参见copy module。在

这是因为当你说

altList = origList

实际上,您将altList的位置指向origList的位置(因为python中的所有内容都是一个对象)。实际上,这里的相等意味着“使这些对象成为同一对象”,而不是赋予它们相同的值。在

Python中的所有内容都是一个引用。他们是同一张单子。在

altList = origList[:]

相关问题 更多 >

    热门问题