修改原始列表时如何制作对象列表的副本?

Tak*_*kun 8 python list object

可能重复:
如何在python中克隆列表?
在Python中复制列表的最佳方法是什么?

original_list = [Object1(), Object2(), Object3()]
copy_list = original_list
original_list.pop()
Run Code Online (Sandbox Code Playgroud)

如果我从原始列表中删除一个对象,我怎样才能保持副本列表不被更改?

原始清单

[<Object.Object instance at 0x00EA29E0>, <Object.Object instance at 0x00EA2DC8>, <Object.Object instance at 0x00EA2EE0>]
Run Code Online (Sandbox Code Playgroud)

弹出原始列表后复制列表(我希望它等于上面的内容)

[<Object.Object instance at 0x00EA29E0>, <Object.Object instance at 0x00EA2DC8>]
Run Code Online (Sandbox Code Playgroud)

elr*_*icL 7

这将起作用。

import copy
copy_list = copy.copy(original_list)
Run Code Online (Sandbox Code Playgroud)

copy_list = list(original_list)
Run Code Online (Sandbox Code Playgroud)


Gre*_*att 6

使用copy.deepcopy()进行深层复制:

import copy
copy_list = copy.deepcopy(original_list)
Run Code Online (Sandbox Code Playgroud)

对于浅拷贝使用copy.copy():

import copy
copy_list = copy.copy(original_list)
Run Code Online (Sandbox Code Playgroud)

或没有指定端点的切片:

copy_list = original_list[:]
Run Code Online (Sandbox Code Playgroud)

有关深层和浅层副本的说明,请参阅副本文档.