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)
但它们都变成了浅色的副本.
任何提示?
我的模拟条目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行长,它不处理一切.
如果只有一个级别,您可以使用LC.
b = [x[:] for x in a]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4875 次 |
| 最近记录: |