Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 复制列表的值而不是引用_Python - Fatal编程技术网

Python 复制列表的值而不是引用

Python 复制列表的值而不是引用,python,Python,我有一个列表,我想在它被修改后进行比较。前一个\u列表=当前\u列表,然后是对当前\u列表的修改。但是我遇到的问题是,无论何时更新当前的_列表,之前的_列表也会更新,因为python中的所有内容都是引用。我试过了 previous_list = current_list[:] previous_list = current_list.copy() previous_list = list(current_list) 但所有这些都不起作用,每次更新当前列表时,前一个列表会立即更新,而不必阅读此行

我有一个列表,我想在它被修改后进行比较。前一个\u列表=当前\u列表,然后是对当前\u列表的修改。但是我遇到的问题是,无论何时更新当前的_列表,之前的_列表也会更新,因为python中的所有内容都是引用。我试过了

previous_list = current_list[:]
previous_list = current_list.copy()
previous_list = list(current_list)
但所有这些都不起作用,每次更新当前列表时,前一个列表会立即更新,而不必阅读此行

previous_list = current_list[:] 
再说一遍


我的目标是有一个while循环,直到列表相等。当前_列表中的每个循环在使用当前_值更新前一个_列表后进行修改。我认为解决方案是使用上面的复制方法之一来创建列表的副本并分配,但那可能也是一个参考。

正在复制此列表。然而,列表中的任何内容都不是,因为这些都是浅显的副本。你需要一份深度副本。也许只是简单的previous=[x.copy for x in current]–juanpa.arrivillaga

这种拷贝的单词是“clone”。克隆有两种:浅层和深层。列表是容器,而不是值确实被复制,但项目不是,它们由两个列表共享。这被称为浅拷贝。请尝试previous_list=copy.deepcopycurrent_list正在复制此列表。然而,列表中的任何内容都不是,因为这些都是浅显的副本。你需要一份深度副本。也许只是previous=[x.copy for x in current]您可以尝试共享您的代码吗?是的,这很有效!谢谢你@flakes你能证明上一个列表=列表当前列表应该工作吗?@John这表明listl创建了一个副本,尽管listl在这方面更清楚一些
l = [1,2,3]

l2 = list(l)

id(l)
2860467931976

id(l2)
2860467932424