深拷贝是将对象全拷贝,包括嵌套对象

def deepcopy(cls):
if isinstance(cls, dict):
dct = {}
for k, v in cls.items():
dct[k] = deepcopy(v)
return dct
elif isinstance(cls, list):
li = []
for item in cls:
li.append(deepcopy(item))
return li
elif isinstance(cls, tuple):
li = []
for i in cls:
li.append(deepcopy(i))
return tuple(li)
else:
return cls

验证:

import copy

if __name__ == '__main__':
lst = [1, 2, 3, 6, 4, ([5, 6, 8, 7, [7, 8, {"acb": 89375, "dxt": "kgfjolij", "v": 222}, 5, 4, 7]], (2,5,{"z":2}))] res = deepcopy(lst)
print(res,'deep',id(res[5][0]))
print('lst', id(lst[5][0]))
ls = copy.copy(lst)
print('ls', id(ls[5][0])) #[1, 2, 3, 6, 4, ([5, 6, 8, 7, [7, 8, {'acb': 89375, 'dxt': 'kgfjolij', 'v': # 222}, 5, 4, 7]], (2, 5, {'z': 2}))] deep 42348296
# lst 42348168
# ls 42348168

代码简化:

def deepcopy(cls):
if isinstance(cls, dict):
return {k: deepcopy(v) for k, v in cls.items()}
elif isinstance(cls, list):
return [deepcopy(item) for item in cls]
elif isinstance(cls, tuple):
return tuple([deepcopy(item) for item in cls])
else:
return cls

最新文章

  1. JS 传播事件、取消事件默认行为、阻止事件传播
  2. span 元素无法设置宽度问题
  3. AutoMapper不用任何配置就可以从dynamic(动态)对象映射或映射到dynamic对象。
  4. ios8 新增的 showViewController 和 showDetailViewController
  5. html5学习小结,float练习。
  6. java 正则表达式获取匹配和非获取匹配
  7. 使用druid连接池的超时回收机制排查连接泄露问题
  8. Jquery 利用单个复选款(checkbox)实现全选、反选
  9. hdu2025查找最大元素
  10. mac升级yosemite后安装gd的freetype扩展
  11. 【转】IntelliJ IDEA2016.1 + maven 创建java web 项目
  12. Spring RESTful + Redis全注解实现恶意登录保护机制
  13. 【数据库】Mean web开发 03-MongoDB客户端管理工具NoSQL Manager for MongoDB的使用
  14. Eclipse开发C/C++ 安装配置
  15. Django框架简介-路由系统
  16. python之路--MySQL 库,表的详细操作
  17. Django-website 程序案例系列-12 CSRF
  18. BZOJ1415[Noi2005]聪聪和可可——记忆化搜索+期望dp
  19. linux SSH免密码登录远程服务器
  20. StriveEngine-UDP

热门文章

  1. 六 Struts2访问Servlet的API方式一:完全解耦合的方式
  2. 4 Action的3种编写方式,pojo,实现和继承(推荐)
  3. PullToRefreshScrollView刷新图标和字体的设定
  4. Android FM模块学习之四源码解析(一)
  5. CSS垂直居中的8种方法
  6. Electron调用C++的DLL
  7. what is 'linesize alignment' meaning?
  8. Django 学习 之ORM聚合查询分组查询与F查询与Q查询
  9. C语言调试器GDB和LLDB的使用方法
  10. 清除编译缓存DerivedDate