手写递归函数实现深拷贝
时间: 2023-09-26 13:10:49 浏览: 139
递归加拷贝文件
当我们需要手动实现深拷贝时,可以使用递归函数来处理对象的深拷贝。下面是一个简单的示例,展示了如何使用递归函数实现深拷贝:
```python
import copy
def deep_copy(obj):
# 如果传入的是不可变类型,则直接返回该对象
if isinstance(obj, (int, float, str, bool, tuple)):
return obj
# 如果传入的是可变类型,则进行深拷贝
if isinstance(obj, list):
new_list = []
for item in obj:
new_list.append(deep_copy(item))
return new_list
if isinstance(obj, dict):
new_dict = {}
for key, value in obj.items():
new_dict[key] = deep_copy(value)
return new_dict
# 如果传入的是自定义类对象,则使用copy模块的deepcopy函数进行深拷贝
return copy.deepcopy(obj)
```
上述代码中,首先判断传入的对象是否为不可变类型(如 int、float、str、bool、tuple),如果是则直接返回该对象。接下来判断传入的对象是否为可变类型,如 list 和 dict,如果是则创建一个新的空列表或字典,并遍历原始对象的每个元素或键值对,递归调用深拷贝函数,将拷贝后的对象添加到新的列表或字典中。最后,如果传入的对象是自定义类对象,则使用 `copy.deepcopy()` 函数进行深拷贝。
需要注意的是,上述代码只是一个简单示例,无法处理所有复杂的情况,如循环引用等。在实际应用中,还需要根据具体需求进行适当的调整和扩展。
阅读全文