2024-04-25 16:48:35 发布
网友
假设我有一个列表a,我想把它复制到b,这样我就可以修改a,但保持其原始形式不变:
a
b
使用传统的函数。。。在
a = [1,[2,3],4] b = list(a) print id(a), id(b) # 2941136 35748600
a和b的id不同,所以复制成功。但是list()没有复制子列表——改变a[1][0]将改变{}
list()
a[1][0]
我不知道用什么方法来解决这个问题。在
复制嵌套列表的一种方法(给定示例)是:
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不会被复制)。它只显示了如何实现这样一个函数的想法,并没有给出完整的实现。在
dicts
在实际的代码中,您当然会使用copy.deepcopy()。在
copy.deepcopy()
复制嵌套列表的一种方法(给定示例)是:
此函数将列表复制到一个新列表,然后递归地复制所有嵌套列表以实现深层复制。在
请注意,这只会创建列表和不可变对象的副本(例如,
dicts
不会被复制)。它只显示了如何实现这样一个函数的想法,并没有给出完整的实现。在在实际的代码中,您当然会使用
copy.deepcopy()
。在相关问题 更多 >
编程相关推荐