python - "Deep copy"没有使用deepcopy函数的嵌套列表

标签 python deep-copy nested-lists

我正在尝试复制嵌套列表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 行长,并没有处理所有事情。

关于python - "Deep copy"没有使用deepcopy函数的嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7845152/

相关文章:

javascript - 使用 JavaScript 将路径转换为嵌套无序列表 :

python - 从 Google Drive 创建完整的文件夹结构,包括路径

python - 如何让openAI API只响应特定类别的请求?

css - FireBug(或任何其他方法)-如何从 DIV 和子 div 复制所有 CSS 样式?

python - 嵌套列表中第一个值的总和

python - 如何使用另一个列表对多维列表进行排序

C# 解析和更改 yaml 中的字符串

python - Plone : unbound prefix in configure. zcml

java - 深度复制“对象”类型

java - 找不到 NotSerializedException 的来源