美文网首页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