美文网首页Python从入门到精通
Python中深浅拷贝的区别

Python中深浅拷贝的区别

作者: Hello_Hui | 来源:发表于2018-06-04 19:46 被阅读0次

    对于普通数据拷贝深浅拷贝是没有区别的,比如:

    list1 = [1,2,3]

    list2 = copy.copy(list1)

    list3 = copy.deepcopy(list1)

    那么list2,list3的打印结果都是1,2,3

    当list1中的值变化时,list2和list3是不会变化的,因为拷贝后,系统为它们分配了一个新的内存。(元祖除外

    当拷贝对象为元祖时,无论是深拷贝还是浅拷贝,都只是得到了元祖的一个引用。

    然而,嵌套类型的拷贝就有区别了,如图:

    浅拷贝

    list1 = [1,2]

    list2 = [3,4]

    list3 = [list1,list2]

    list4 = copy.copy(list3)

    当修改list1中元素 list1[0] = 100后

    list3和list4的值均变为[100,2,3,4]  (因为它们都是存储的list1/list2的内存地址)

    嵌套类型_浅拷贝

    深拷贝

    list1 = [1,2]

    list2 = [3,4]

    list3 = [list1,list2]

    list4 = copy.copy(list3)

    当修改list1[0]=100后

    list3 = [100,2,3,4]

    list4 =[1,2,3,4]

    list4之所以没有改变是因为list4把list3和其存储的引用内存全部拷贝过来了,当list1的值再改变时和list4中的list1就没有关系了,此时list4中的list1也就相当于不叫list1了。

    嵌套类型_深拷贝

    相关文章

      网友评论

        本文标题:Python中深浅拷贝的区别

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