本文共 1067 字,大约阅读时间需要 3 分钟。
在Python中,当你试图复制一个复杂的对象结构(如嵌套列表、字典等)时,可能会遇到“maximum recursion depth exceeded”(递归深度过深)的错误。这是因为Python默认的递归深度限制较低。为了解决这个问题,可以使用copy模块中的deepcopy()函数创建一个独立副本。
以下是使用deepcopy()函数的示例:
import copy# 定义一个复杂的数据结构data = { 'name': '张三', 'age': 30, 'hobbies': ['阅读', '编程']}# 使用deepcopy()复制数据结构copied_data = copy.deepcopy(data)# 修改复制的数据不会影响原始数据copied_data['name'] = '李四'print(data) # 输出: {'name': '张三', 'age': 30, 'hobbies': ['阅读', '编程']}print(copied_data) # 输出: {'name': '李四', 'age': 30, 'hobbies': ['阅读', '编程']} def test_deep_copy(): original = { 'data': [1, 2, 3], 'nested_dict': {'key1': 'value1', 'key2': 'value2'} } copied = copy.deepcopy(original) # 修改复制的数据 copied['data'].append(4) copied['nested_dict']['key1'] = 'new_value' # 测试原始数据未被修改 assert original['data'] != copied['data'] assert original['nested_dict'] != copied['nested_dict'] 在数据预处理、图像和视频分析等领域,复制大型数据结构(如深度学习模型参数、图像等)很常见。通过deepcopy()函数,你可以确保原始数据与复制后的数据完全独立,这对于保持数据一致性和预测准确性非常重要。
例如,在机器学习和计算机视觉中,当需要对训练好的模型进行微调或实验设置时,通常会复制原始模型参数,然后对复制后的模型进行调整,而不影响原始模型性能。
转载地址:http://rdlfk.baihongyu.com/