当前位置: 首页 > 面试题库 >

“深度复制”嵌套列表,不使用深度复制功能

王庆
2023-03-14
问题内容

我正在尝试复制嵌套列表a,但是 使用该copy.deepcopy函数不知道该如何做。

a = [[1, 2], [3, 4]]

我用了:

b = a[:]

b = a[:][:]

但事实证明,它们全都是浅表。

有什么提示吗?


问题答案:

我的模拟输入copy.deepcopy

def deepcopy(obj):
    if isinstance(obj, dict):
        return {deepcopy(key): deepcopy(value) for key, value in obj.items()}
    if hasattr(obj, '__iter__'):
        return type(obj)(deepcopy(item) for item in obj)
    return obj

策略:遍历传入对象的每个元素,递归地下降到也可迭代的元素中,并创建相同类型的新对象。

无论它是全面的还是没有错误的,我都不会提出任何主张[1](不要传递引用自己的对象!),但是应该让您入门。

[1]真的!这里的重点是演示,而不是涵盖所有可能的可能性。源头copy.deepcopy是长50线, 不处理一切。



 类似资料:
  • 问题内容: 我有一个带有Node的图类,其中每个Node可以连接到其他节点: 我想复制整个图。第一次尝试,我尝试制作一个类似以下的复制构造函数: 因此,深度复制图形将是: 但这不起作用,因为这破坏了节点之间的连接关系。我想知道是否有人建议以一种简单的方式做到这一点?谢谢。 问题答案: 问题是您需要复制节点的身份,而不仅仅是节点的值。具体来说,当您复制某个节点时,您需要处理其所指节点的身份。这意味着

  • 问题内容: 我想知道是否需要避免在创建一个带有嵌入式对象数组的简单对象时复制对对象的引用。情况如下:我有一个接受JSON并应用一些逻辑然后将对象存储在其中的服务器D B。可以说,我的表单用于保存DB中的团队。服务器接受team作为json。团队有一个TeamMember对象数组,我的表单有一个简单的字段来输入团队成员信息并将其添加到团队teamMembers数组中。现在这是一个问题,当我向数组列表

  • 问题 你想复制一个对象,包含其所有子对象。 解决方案 clone = (obj) -> if not obj? or typeof obj isnt 'object' return obj if obj instanceof Date return new Date(obj.getTime()) if obj instanceof RegExp flags

  • 本文向大家介绍C#复制和深度复制的实现方法,包括了C#复制和深度复制的实现方法的使用技巧和注意事项,需要的朋友参考一下 深度复制与浅表复制的区别在于,浅表复制只复制值类型的值,而对于实例所包含的对象依然指向原有实例。 运行结果: 一、List<T>对象中的T是值类型的情况(int 类型等) 对于值类型的List直接用以下方法就可以复制: 二、List<T>对象中的T是引用类型的情况(例如自定义的实

  • 问题内容: 我想使用自己的Node类在Java中实现树结构。但是我很困惑如何进行深层复制来复制树。 我的Node类将是这样的: 我是递归的新手,所以有什么我可以学习的代码吗?谢谢! 问题答案: 尝试

  • 问题内容: 据我了解,地图是Go中的参考类型。因此,分配将进行浅表复制。我计划在golang中进行Maps的递归深层复制。递归,因为我正在处理一个包含JSON的未编组内容的映射。 错误:无法使用(* dest)[key]的地址。(map [string] interface {})我该如何解决?还有其他方法可以绘制深层地图吗? 我在golang的map的内部入门,也将很有用。 问题答案: