zoukankan      html  css  js  c++  java
  • Python中的深拷贝和浅拷贝

    深拷贝与浅拷贝

    浅拷贝(简单拷贝)

    • 特点:只能拷贝当前列表,不能拷贝列表中的多维列表元素

    实例(一维列表浅拷贝):

    newlist = varlist.copy()
    
    #两个对象的内存地址不一样
    print(varlist,id(varlist))
    print(newlist,id(newlist))
    
    #对new列表进行操作也是独立的
    del newlist[0]
    print(varlist,newlist)
    
    #输出结果
    [1, 2, 3] 140568546805448
    [1, 2, 3] 140568546673992
    [1, 2, 3] [2, 3]
    

    实例2(多维列表浅拷贝):

    #定义多维列表
    varlist = [1,2,3,[1,2,3],[4,5,6],[7,8,9]]
    newlist = varlist.copy()
    print(varlist,id(varlist))
    print(newlist,id(newlist))
    
    #当操作拷贝后的列表中元素,源列表也收到的影响
    del newlist[3][1]
    print(varlist,id(varlist))
    print(newlist,id(newlist))
    
    #简单拷贝只是拷贝的外面一层,内部元素对象还是引用的
    #多维列表中的同一个元素(对象)其实内存地址是一样的
    print(varlist[4],id(varlist[4]))
    print(newlist[4],id(newlist[4]))
    
    #输出结果
    [1, 2, 3, [1, 2, 3], [4, 5, 6], [7, 8, 9]] 140568546821384
    [1, 2, 3, [1, 2, 3], [4, 5, 6], [7, 8, 9]] 140568546805448
    
    [1, 2, 3, [1, 3], [4, 5, 6], [7, 8, 9]] 140568546821384
    [1, 2, 3, [1, 3], [4, 5, 6], [7, 8, 9]] 140568546805448
    
    [4, 5, 6] 140568546821128
    [4, 5, 6] 140568546821128
    
    

    深拷贝

    • 特点:不光拷贝当前的列表,还将列表汇总的多维元素也拷贝了一份

    实例(多维列表深拷贝):

    import copy
    
    varlist = [1,2,3,[1,2,3],[4,5,6],[7,8,9]]
    newlist = copy.deepcopy(varlist)
    #copy.copy()和普通的copy是一致的,尽量使用deepcopy,规避掉引用别的对象导致原列表改变的问题
    
    #列表id地址不一致
    print(varlist,id(varlist))
    print(newlist,id(newlist))
    
    #列表中的元素id地址也完全不一样
    print(varlist[4],id(varlist[4]))
    print(newlist[4],id(newlist[4]))
    
    #输出结果
    [1, 2, 3, [1, 2, 3], [4, 5, 6], [7, 8, 9]] 140568546821512
    [1, 2, 3, [1, 2, 3], [4, 5, 6], [7, 8, 9]] 140568546821384
    [4, 5, 6] 140568546822600
    [4, 5, 6] 140568546823112
    
    
    司甜甜爱吃蛋糕~~~
  • 相关阅读:
    现在做什么行业赚钱,这些行业让你小投资赚大钱
    手把手教你如何用手机做兼职赚钱
    如何在网上挣钱,这几个项目让你月入过万元
    有哪些适合年轻人的挣钱项目
    返回特定pool的所有pool成员的信息
    云数据库时代:企业数据架构的云化智能重构和变革(含大会PPT)
    Python爬虫入门教程 25-100 知乎文章图片爬取器之一
    小小的柳条编织品,让他远销60多个国家
    Derby的jar说明
    Derby的jar说明
  • 原文地址:https://www.cnblogs.com/yuki-nana/p/14666440.html
Copyright © 2011-2022 走看看