我正在尝试复制嵌套列表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/