python复制嵌套列表

2024-04-25 16:48:35 发布

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

假设我有一个列表a,我想把它复制到b,这样我就可以修改a,但保持其原始形式不变:

使用传统的函数。。。在

a = [1,[2,3],4]
b = list(a)

print id(a), id(b) 
# 2941136 35748600

a和b的id不同,所以复制成功。但是list()没有复制子列表——改变a[1][0]将改变{}

^{pr2}$

我不知道用什么方法来解决这个问题。在


Tags: 方法函数id列表传统形式listprint
1条回答
网友
1楼 · 发布于 2024-04-25 16:48:35

复制嵌套列表的一种方法(给定示例)是:

def deepcopy_nested_list(data):
    out = []
    for el in data:
        if isinstance(el, list):
            out.append(deepcopy_nested_list(el))
        else:
            out.append(el)
    return out

此函数将列表复制到一个新列表,然后递归地复制所有嵌套列表以实现深层复制。在

请注意,这只会创建列表和不可变对象的副本(例如,dicts不会被复制)。它只显示了如何实现这样一个函数的想法,并没有给出完整的实现。在

在实际的代码中,您当然会使用copy.deepcopy()。在

相关问题 更多 >