python 深拷贝&浅拷贝

标签: python基本知识

  • 可以理解为:浅拷贝就是对引用的拷贝,所谓深拷贝就是对对象的资源的拷贝。(类似java)

  • 赋值操作的理解:

    • 赋值是将一个对象的地址赋值给一个变量,让变量指向该地址
    • 修改不可变对象(str、tuple)需要开辟新的空间
    • 修改可变对象(list等)不需要开辟新的空间
  • b = a 与 b=a[:]的区别
    • b=a 表示b引用a,则意味着b指向a的地址
    • b=a[:] a[:]创建了一个a的副本,是一个深拷贝,则意味着b引用a的副本,b与a中元素的地址不同,只是值相同
      这里写图片描述
  • 例子:

    a=[1,2,3]
    b=a
    b[:]=[x+1 for x in a]
    print a, b
    输出:[2, 3, 4] [2, 3, 4]
    b = [x-1 for x in a]
    print a,b
    输出:[2, 3, 4] [1, 2, 3]
    
版权声明:本文为u012559634原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012559634/article/details/77918004