美文网首页
python深浅拷贝

python深浅拷贝

作者: 青哥DevOps | 来源:发表于2020-01-06 15:07 被阅读0次

最近在复习python相关的基础,然后想到了曾经面试遇到过深浅拷贝得问题,我想对于初学者来说,还是很有必要去学习的,因为在以后的开发中,可以利用深浅拷贝去解决工程上的问题。

在python中,创建一个对象,并且将它赋值给另一个变量的时候,python并没有拷贝这个对象,而拷贝了这个对象的引用。

In [1]: l1 = [1,2,3,4,5,[1,2]]

In [2]: l2 = l1

In [3]: id(l1)
Out[3]: 4426724936

In [4]: id(l2)
Out[4]: 4426724936

In [5]: l1
Out[5]: [1, 2, 3, 4, 5, [1, 2]]

In [6]: l2
Out[6]: [1, 2, 3, 4, 5, [1, 2]]

In [7]: l1[5].append(3)

In [8]: l1
Out[8]: [1, 2, 3, 4, 5, [1, 2, 3]]

In [9]: l2
Out[9]: [1, 2, 3, 4, 5, [1, 2, 3]]

什么是浅拷贝,什么是深拷贝,这里我们结合py实例一一的介绍一下。

浅拷贝
浅拷贝没有拷贝子对象,所以原始数据改变,子对象也跟着改变

In [10]: import copy

In [11]: l3 = copy.copy(l1)

In [12]: id(l1)
Out[12]: 4426724936

In [13]: id(l3)
Out[13]: 4427112136

In [14]: l1
Out[14]: [1, 2, 3, 4, 5, [1, 2, 3]]

In [15]: l3
Out[15]: [1, 2, 3, 4, 5, [1, 2, 3]]

In [16]: l1.append(6)

In [17]: l1[5].append(4)

In [18]: l1
Out[18]: [1, 2, 3, 4, 5, [1, 2, 3, 4], 6]

In [19]: l2
Out[19]: [1, 2, 3, 4, 5, [1, 2, 3, 4], 6]

深拷贝
深拷贝拷贝了子对象,所以修改原始数据,子对象不改变

In [20]: l4 = copy.deepcopy(l1)

In [21]: id(l1)
Out[21]: 4426724936

In [22]: id(l4)
Out[22]: 4427111880

In [23]: l1[5].append(5)

In [24]: l1.append(7)

In [25]: l1
Out[25]: [1, 2, 3, 4, 5, [1, 2, 3, 4, 5], 6, 7]

In [26]: l4
Out[26]: [1, 2, 3, 4, 5, [1, 2, 3, 4], 6]

如果这篇文章帮助了你,麻烦点点喜欢,谢谢大家!

相关文章

  • Python深浅拷贝

    深浅拷贝 首先来个准备知识: list1 = ['我爱你','中国','亲爱的母亲'] list2 = list1...

  • python 深浅拷贝

  • Python深浅拷贝

    在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝...

  • Python深浅拷贝

    预备知识一——python的变量及其存储 在详细的了解python中赋值、copy和deepcopy之前,我们还是...

  • Python深浅拷贝

    导入模块import copy names = ['lilei','hanmei',['lll','rrrr']]...

  • python深浅拷贝

    最近在复习python相关的基础,然后想到了曾经面试遇到过深浅拷贝得问题,我想对于初学者来说,还是很有必要去学习的...

  • python深浅拷贝

  • Python深浅拷贝

    变量赋值 浅拷贝 只复制最顶层的列表

  • python深浅拷贝

    深复制与浅复制:浅复制不会克隆子对象,所以,复制出来的对象和原对象并非完全不相关,根据以下代码大致感觉是复制得到的...

  • python深浅拷贝

    浅拷贝 浅拷贝copy.copy是对于一个对象的顶层拷贝,通俗的理解是:拷贝了引用,并没有拷贝里面的内容。 cop...

网友评论

      本文标题:python深浅拷贝

      本文链接:https://www.haomeiwen.com/subject/tfckactx.html