不使用deepcopy函数的"深层复制"嵌套列表

xia*_*012 4 python deep-copy nested-lists

我试图复制嵌套列表a,但不知道如何使用该copy.deepcopy函数.

a = [[1, 2], [3, 4]]
Run Code Online (Sandbox Code Playgroud)

我用了:

b = a[:]
Run Code Online (Sandbox Code Playgroud)

b = a[:][:]
Run Code Online (Sandbox Code Playgroud)

但它们都变成了浅色的副本.

任何提示?

Kir*_*ser 8

我的模拟条目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
Run Code Online (Sandbox Code Playgroud)

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

我没有声称这是全面的或没有错误[1](不要传入一个引用自己的对象!)但是应该让你开始.

[1]真的!这里的要点是展示,而不是涵盖所有可能的可能性.来源copy.deepcopy是50行长,不处理一切.


Ign*_*ams 5

如果只有一个级别,您可以使用LC.

b = [x[:] for x in a]
Run Code Online (Sandbox Code Playgroud)

  • 切换到递归解决方案.或者吮吸它并使用`deepcopy()`. (4认同)