原始清单已在python中修改[重复]

发布于 2021-01-29 15:05:05

这个问题已经在这里有了答案

分配后列表意外更改。如何克隆或复制它以防止这种情况? (21个回答)

5年前关闭。

我有一个简单的代码如下:

def swap(node):
    m00         = node[0][0]
    node[0][0]  = node[1][0]
    node[0][1]  = m00

originalList = [[1,2,3], [4,5,6], [7,8,9]]

# temp = list(originalList)
temp = originalList[:]

swap(temp)

print originalList

最初,我使用上面显示的值定义一个列表,然后将该列表复制到一个临时列表中。我尝试了两种复制方法。然后,我使用temp列表执行交换功能,然后再次打印原始列表。结果,原始列表被更改。这种行为背后的原因是什么?

关注者
0
被浏览
69
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    originalList[:]复制 外部 列表,但复制3个较短的列表。您可以像这样复制它们:

    temp = [x[:] for x in originalList]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看