如何在修改原始列表时复制不更改的对象列表?

2024-04-18 23:23:06 发布

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

Possible Duplicates:
How to clone a list in python?
What is the best way to copy a list in Python?

original_list = [Object1(), Object2(), Object3()]
copy_list = original_list
original_list.pop()

如果我从原始列表中删除了一个对象,如何才能使复制列表不发生更改?

原始列表

[<Object.Object instance at 0x00EA29E0>, <Object.Object instance at 0x00EA2DC8>, <Object.Object instance at 0x00EA2EE0>]

弹出原始列表后复制列表(我希望此值等于上面的值)

[<Object.Object instance at 0x00EA29E0>, <Object.Object instance at 0x00EA2DC8>]

Tags: toinstancein列表objectcloneiswhat
3条回答

对深度副本使用copy.deepcopy()

import copy
copy_list = copy.deepcopy(original_list)

对于浅拷贝,请使用copy.copy()

import copy
copy_list = copy.copy(original_list)

或未指定终结点的切片:

copy_list = original_list[:]

有关深层和浅层副本的说明,请参见copy docs

这会奏效的。

import copy
copy_list = copy.copy(original_list)

同时

copy_list = list(original_list)

使用deepcopy

Return a deep copy of x.

from copy import deepcopy

original_list = [Object1(), Object2(), Object3()]
copy_list = deepcopy(original_list)
original_list.pop()

但是请注意,在您的情况下,切片会工作得更快:

copy_list = original_list[:]

相关问题 更多 >