zoukankan      html  css  js  c++  java
  • 深浅拷贝

    一. = 拷贝
     从上到下,只有一个列表被创建

    lst1 = ["胡辣汤","灌汤包","油泼面","麻辣香锅"]
    lst2 = lst1
    print(id(lst1),id(lst2))   #一个东西
    lst1.append("盖浇饭")
    print(lst2)

    二.浅拷贝

    创建一个新的,和原来的长得一样

    lst1 = ["胡辣汤","灌汤包","油泼面","麻辣香锅"]
    lst2 = lst1.copy()
    print(id(lst1),id(lst2))   #创建新的  和原来的一样
    lst1.append("盖浇饭")     #和第二个列表无关
    print(lst2)

    浅拷贝只能拷贝到第一层

    lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]]
    lst2 = lst1.copy()  #     浅拷贝. 只拷贝第一层内容
    print(id(lst1),id(lst2))
    lst1[4].append("赵王城")
    print(lst2)               #浅拷贝只能拷贝到第一层

    三.深拷贝

    需要导入一个 copy 包

    深拷贝 拷贝对象的所有东西

    import copy
    lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]]
    lst2 = copy.deepcopy(lst1)   #深拷贝 :拷贝对象内部的所有东西
    print(id(lst1),id(lst2))
    lst1[4].append("盖浇饭")
    print(lst1,lst2)  

    四.为什么要深浅拷贝

    1.提高创建对象的速度

    2.计算机中最慢的就是创建对象,需要分配内存地址

    3.最快的方式就是二进制流的形式进行复制,速度最快

  • 相关阅读:
    UOJ222 【NOI2016】区间
    BZOJ3631 [JLOI2014]松鼠的新家
    BZOJ 1001 [BeiJing2006]狼抓兔子
    poj2488 A Knight's Journey裸dfs
    hdu 4289 网络流拆点,类似最小割(可做模板)邻接矩阵实现
    hdu 4183 EK最大流算法
    HDU 4180 扩展欧几里得
    HDU 4178 模拟
    HDU 4177 模拟时间问题
    hdu 4185 二分图最大匹配
  • 原文地址:https://www.cnblogs.com/q767498226/p/10066021.html
Copyright © 2011-2022 走看看