首页 > 解决方案 > 如何复制 Python 对象的值而不是变量的引用地址?

问题描述

所以,我有一个这样的 Python 列表:

list_ = [[Object, 2, ["r","g","b"]],
         [Object, 5, ["r","g","b"]],
         ...
         [Object, 3, ["r","g","b"]]]

我需要将此列表复制到一个新列表,但是当我使用 copy.deepcopy() 时,它会使用列表及其引用。

new_list = copy.deepcopy(list_)

当我更改 new_list 中的值时,它会影响列表中的值_我想复制列表_new_list 将具有独立变量,因此它必须复制值,而不是引用变量的地址。我怎样才能做到这一点?

标签: pythonarraysobjectcopy

解决方案


只需使用列表理解:

new_list = [x[:] for x in list_]

但老实说,copy.deepcopy无论列表中的维度如何,都可以正常工作,您一定在其他地方犯了错误。无论如何,与列表切片相比,它可能非常慢。


推荐阅读