修改原始列表时,如何使对象列表的副本不变? [英] How to make a copy of a list of objects not change when modifying the original list?

查看:75
本文介绍了修改原始列表时,如何使对象列表的副本不变?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可能的重复项:
如何在python中克隆列表?
在其中复制列表的最佳方法是什么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()

如果我从原始列表中删除了一个对象,该如何保持副本列表也保持不变?

If I remove an object from the original list, how can I keep the copy list from changing as well?

原始列表

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

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

Copy List after popping the original list (I want this to equal what is above)

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

推荐答案

使用复制.deepcopy()获取深层副本:

import copy
copy_list = copy.deepcopy(original_list)

对于浅表副本,请使用 copy.copy():

For a shallow copy use copy.copy():

import copy
copy_list = copy.copy(original_list)

或未指定端点的切片:

copy_list = original_list[:]

请参阅复制文档,以获取有关Deep&浅层副本.

See the copy docs for an explanation about deep & shallow copies.

这篇关于修改原始列表时,如何使对象列表的副本不变?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆