zoukankan      html  css  js  c++  java
  • 浅copy与深copy

    浅copy

    实现浅copy的几种方式:

    1 import copy
    2 
    3 name1=['Liyunlong',['alex','Tony'],'Xuliucheng']
    4 
    5 name2=copy.copy(name1)
    6 name2=name1[:]
    7 name2=name1.copy()

    实现深copy的方式:

    1 import copy
    2 
    3 name1=['Liyunlong',['alex','Tony'],'Xuliucheng']
    4 
    5 name2=copy.deepcopy(names) #注意copy.copy()依旧是浅copy

    区别:

    浅copy:复制列表是只是被复制列表的引用,只copy第一层,第二层copy内存地址

    深copy:独立复制一份,复制列表与被复制列表无关

    例如:

    浅copy之后更改列表第一层和第二层:

    1 import copy
    2 
    3 name1=['Liyunlong',['alex','Tony'],'Xuliucheng']
    4 
    5 name2=copy.copy(name1)
    6 name1[0]='Zhaogang'
    7 name2[1][0]='James Tao'
    8 print(name1)
    9 print(name2)

    浅copy结果:

    深copy之后更改列表第一层和第二层:

    1 import copy
    2 
    3 name1=['Liyunlong',['alex','Tony'],'Xuliucheng']
    4 
    5 name2=copy.deepcopy(name1)
    6 name1[0]='Zhaogang'
    7 name2[1][0]='James Tao'
    8 print(name1)
    9 print(name2)

    深copy结果:

    另外,使用等号复制列表相当于copy了前列表的全部地址:

    1 name1=['Liyunlong',['alex','Tony'],'Xuliucheng']
    2 
    3 name2=name1
    4 name1[0]='Zhaogang'
    5 name2[1][0]='James Tao'
    6 print(name1)
    7 print(name2)

    结果为:

  • 相关阅读:
    钱途第三章(不同类别的风险投资)
    羊皮卷之九
    MAP平台界面公式的 package 包名自定义
    java类Timer和TimerTask的使用
    钱途第五章(创业初期的公司安排)
    MYSQL 双向同步方案:
    羊皮卷之六
    羊皮卷之十
    羊皮卷之一
    MAP平台自定义查询
  • 原文地址:https://www.cnblogs.com/BIT-taozhen/p/9744510.html
Copyright © 2011-2022 走看看