(2018-04-07.Python从Zero到One)一、python高级编程__1.2.5深拷贝、浅拷贝

上一篇文章为:→1.2.4==、is

深拷贝、浅拷贝

1. 浅拷贝

  • 浅拷贝是对于一个对象的顶层拷贝

通俗的理解是:拷贝了引用,并没有拷贝内容

day12_其他知识-01.png
day12_其他知识-02.png

2. 深拷贝

  • 深拷贝是对于一个对象所有层次的拷贝(递归)
day12_其他知识-03.png
进一步理解拷贝
day12_其他知识-04.png
In [23]: a = [11,22,33]

In [24]: b = [44,55,66]

In [25]: c = (a,b)

In [26]: e = copy.deepcopy(c)

In [27]: a.append(77)

In [28]: a
Out[28]: [11, 22, 33, 77]

In [29]: b
Out[29]: [44, 55, 66]

In [30]: c
Out[30]: ([11, 22, 33, 77], [44, 55, 66])

In [31]: e
Out[31]: ([11, 22, 33], [44, 55, 66])

In [32]: 

In [32]: 

In [32]: f = copy.copy(c)

In [33]: a.append(88)

In [34]: a
Out[34]: [11, 22, 33, 77, 88]

In [35]: b
Out[35]: [44, 55, 66]

In [36]: c
Out[36]: ([11, 22, 33, 77, 88], [44, 55, 66])

In [37]: e
Out[37]: ([11, 22, 33], [44, 55, 66])

In [38]: f
Out[38]: ([11, 22, 33, 77, 88], [44, 55, 66])

3. 拷贝的其他方式

浅拷贝对不可变类型和可变类型的copy不同
In [88]: a = [11,22,33]

In [89]: b = copy.copy(a)

In [90]: id(a)
Out[90]: 59275144

In [91]: id(b)
Out[91]: 59525600

In [92]: a.append(44)

In [93]: a
Out[93]: [11, 22, 33, 44]

In [94]: b
Out[94]: [11, 22, 33]

In [95]:

In [95]:

In [95]: a = (11,22,33)

In [96]: b = copy.copy(a)

In [97]: id(a)
Out[97]: 58890680

In [98]: id(b)
Out[98]: 58890680

  • 分片表达式可以赋值一个序列
    a = "abc"

    b = a[:]

  • 字典的copy方法可以拷贝一个字典
    d = dict(name="zhangsan", age=27)

    co = d.copy()

  • 有些内置函数可以生成拷贝(list)
    a = list(range(10))

    b = list(a)

  • copy模块中的copy函数
    import copy

    a = (1,2,3)

    b = copy.copy(a)

下一篇文章为:→1.2.6进制、位运算
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 19,647评论 17 410
  • 十年前,你显然没来简书。是的,我也一样。 那时没有简书,也不曾看过简媜。那时庆山还叫做安妮宝贝,雪小禅偶尔以虹莲之...
    戌时凉月阅读 967评论 3 7
  • 原本忙了一天,睡意来袭,收到闺密的抱怨,尽管最近睡眠欠佳,心里明白该是快快入睡的时候,可是,再一次,要睡不着了……...
    可乐苹果阅读 381评论 0 0
  • 这周的生活是满当当的,各种高潮迭起,跟练阿斯汤一样,有状态好的,也有状态差的,但是总体都是在进步。练习练习一切自然而来。
    小米是Julie阅读 148评论 0 1
  • 这个是我最近把项目在windows上运行执行npm install 时的错误; 出错原因:所安装的依赖包phant...
    lMadman阅读 1,397评论 0 1

友情链接更多精彩内容