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

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

python 深拷贝_python 深拷贝相关推荐

  1. python默认深拷贝_Python 深拷贝与浅拷贝

    首先分享Python里面的数据类型 1.不可变类型:Number(数字).String(字符串).Tuple(元组). 不可变数据类型在第一次声明赋值的时候, 会在内存中开辟一块空间, 用来存放这个变 ...

  2. python深拷贝_python 深拷贝与浅拷贝的区别

    python中浅拷贝和深拷贝的区别如下: 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deepcopy 深拷贝 拷贝对象及其子对象 如果拷贝对象是一个 ...

  3. python默认深拷贝_python深拷贝和浅拷贝的区别

    在python中,对象赋值实际上是对象的引用.当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用 一般有三种方法, alist=[1,2,3,[& ...

  4. python深拷贝和浅拷贝的使用场景_Python深拷贝和浅拷贝使用方法

    Python深拷贝和浅拷贝使用方法 发布时间:2020-06-06 16:52:01 来源:亿速云 阅读:182 这篇文章运用了实例代码展示Python深拷贝和浅拷贝使用方法,代码非常详细,可供感兴趣 ...

  5. python怎么避免浅拷贝_详谈Python中的深拷贝和浅拷贝

    在平时工作中,经常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题.为了防止数据被修改,就需要在传递一个副本,即使副本被修改,也不会影响原数据的使用.为了生成这个副本,就产生了拷贝. ...

  6. python中的深拷贝与浅拷贝

    浅拷贝的时候,修改原来的对象,深拷贝的对象不会发生改变. 对象的赋值 对象的赋值实际上是对象之间的引用:当创建一个对象,然后将这个对象赋值给另外一个变量的时候,python并没有拷贝这个对象,而只是拷 ...

  7. python中关于深拷贝和浅拷贝的详解

    python中关于深拷贝和浅拷贝的详解 概述 在python的语法中,有两种变量的拷贝方式 一种是深拷贝,一种是浅拷贝 我们先说深拷贝 语法 这里需要通过导入系统的copy模块中的deepcopy才可 ...

  8. python函数方法里面用浅复制深复制_图解 Python 浅拷贝与深拷贝

    Python 中的赋值语句不会创建对象的拷贝,仅仅只是将名称绑定至一个对象.对于不可变对象,通常没什么差别,但是处理可变对象或可变对象的集合时,你可能需要创建这些对象的 "真实拷贝" ...

  9. Python 浅拷贝和深拷贝 - Python零基础入门教程

    目录 一.Python 浅拷贝和深拷贝前言 二.Python 普通的变量赋值 三.Python 浅拷贝和深拷贝 1.Python 浅拷贝 copy 2.Python 深拷贝 deepcopy 3.Py ...

最新文章

  1. ST-3806系列单圈编码器 说明书
  2. V神最新演讲:以太坊2.0的分片交易
  3. POJ 1067 取石子游戏
  4. MCSE认证全攻略(初、中、高)
  5. VisualC++2010系列课程
  6. 前端学习(1771):前端调试之serverworkers的概念和方法
  7. P4: Programming Protocol-Independent Packet Processors
  8. Java定时器每小时执行一次
  9. linux之svn回滚/回退到某个版本
  10. 大时代背景下商业地产的数十年转型发展之路
  11. Blob转换二进制流下载文件
  12. linux下查看硬盘型号、大小等信息
  13. 如何区分本地用户和域用户?
  14. Python中shape的用法
  15. 安装MinGW-w64
  16. c语言continue作用于,c语言continue的用法
  17. JS标准内置对象 数组 的 34 个方法
  18. win32 api简易实现ftp文件上传
  19. 如何修改Kestrel上传文件的大小
  20. 读书寄语之春天该很好,你若尚在场

热门文章

  1. 数据中心内虚拟机迁移带来的网络技术难题
  2. 【转载】解决refreshing gradle project 和Building gradle project info 一直卡住\速度慢
  3. CentOS, 高速设置ssh无password登录
  4. Docker:镜像操作和容器操作
  5. 聪明人的游戏(3)镜子颠倒了什么?
  6. Log4Net五步走
  7. 和rgb画面质量谁好_双11内存RGB灯条如何选?低于400元,只聊酷兽和阿斯加特
  8. java 分配cpu使用率_Java-JVM-CPU使用率达到100%
  9. php exec 怎么确定执行成功_php执行系统外部命令的4种方法
  10. js date 加一天_你不一定了解的js数据类型