分享

python---深浅拷贝

 小猪窝969 2018-11-26
python浅拷贝:只拷贝列表等第一层地址,并且创建内存空间
比如创建一个list  = [1,2[3,4]]
list[0]的内存地址为0001,list[1]的内存地址为0002,list[3]的内存地址为0003,list[2][0]的内存地址为00031,list[2][1]的内存地址为00032
list1 = list.copy() 
list1 只拷贝list所有第一层的内存数据的内存地址 0001,0002,0003,而因为0003是一个列表,是一个整体 是list的第三个元素,list1对0003里面的列表元素00031,00032为间接指向,所以当list1更改list1[2]的数据时,由于list1 和list 同时指向0003这块内存地址,所以list1和list都会同时改变,,0003,0002,0001为列表第一层元素,copy的list1对这两个元素为直接指向,所以更改0003,0002,0001内存地址里面的内容,会重新分配内存地址,不会更改list列表里面的元素
>>> a = [1,2,[1,2]]
>>> b = a[:]
>>> print b
[1, 2, [1, 2]]
>>> b[2]=0
>>> print b
[1, 2, 0]
>>> print a
[1, 2, [1, 2]]
>>>
深拷贝:
import  copy
list = [1,2,[3,4]]
list1 = copy.deepcopy(list)
更改list1里面的任意值  list 和list1 互不影响

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多