zoukankan      html  css  js  c++  java
  • 深拷贝和浅拷贝

    深拷贝:

        对一个对象所有的层次递归的拷贝,深拷贝可以通过copy.deepcopy()来实现

    浅拷贝:

        只对一个对象的顶层进行了拷贝,浅拷贝可以通过copy.copy()来实现

    请看下面浅拷贝的示例:

        c列表里面嵌套了两个列表a和b,然后对c进行浅拷贝并赋值给d, 然后查看c和d的id我们可以发现他们的id并不一样,说明浅拷贝对对象c的顶层完成了拷贝,接下来又分别查看了列表c中的a和列表d中的a发现他们的id一致,则说明浅拷贝没有对对象的里层实现拷贝,而只是拷贝了一个引用指向了a.

    a = [1,2]
    b = [2,3]
    c = [a, b, 22]
    d = copy.copy(c)
    id(c)
    58627144
    id(d)
    58627400
    id(c[1])
    58182280
    id(d[1])
    58182280

    请看下面深拷贝示例:

        同样的例子只是这次是对c进行了深拷贝,可以发现c中a和d中的a的id不一样,即深拷贝是对对象的所有层次完成了递归的拷贝

    >>> import copy
    >>> a = [1,2]
    >>> b = [2,3]
    >>> c = [a, b, 22]
    >>> d = copy.deepcopy(c)
    >>> id(c)
    58182152
    >>> id(d)
    58419976
    >>> id(c[1])
    58420040
    >>> id(d[1])
    56835400

  • 相关阅读:
    如何安装树莓派虚拟机
    树莓派3用create_ap变身无线AP
    Centos 安装golang beego
    Lua中调用C函数
    C++ 用libcurl库进行http通讯网络编程(转)
    SkipList 跳表
    ntohs, ntohl, htons,htonl的比较和详解【转】
    SQLITE3 使用总结(转)
    mysql基础认识1
    mysql 数据类型
  • 原文地址:https://www.cnblogs.com/fanlei5458/p/9235486.html
Copyright © 2011-2022 走看看