• 拷贝、浅拷贝、深拷贝解答


    拷贝

    拷贝/浅拷贝/深拷贝都是针对可变类型数据而言的

    list1 = ["a","b","c","d","f",["e","f","g"]]
    list2 = list1
    
    list1[2] = "plf"
    list1[5][0] = "lt"
    
    print(list1)
    print(list2)
    
    '''
    ['a', 'b', 'plf', 'd', 'f', ['lt', 'f', 'g']]
    ['a', 'b', 'plf', 'd', 'f', ['lt', 'f', 'g']]
    
    '''
    
    
    '''
    	总结:  如果list2是 list1的拷贝,那么list1和list2公用一块内存空间,因此list1改变,list2也会随着改变!
    		
    '''
    


    浅拷贝

    import copy
    list1 = ["a","b","c","d","f",["e","f","g"]]
    list2 = copy.copy(list1)
    
    list1[2] = "plf"
    list1[5][0] = "lt"
    list1[5].append("xyz")
    
    print(list1)
    print(list2)
    
    
    
    '''
    ['a', 'b', 'plf', 'd', 'f', ['lt', 'f', 'g', 'xyz']]
    ['a', 'b', 'c', 'd', 'f', ['lt', 'f', 'g', 'xyz']]
    
    '''
    
    
    
    '''
    	总结: 
    		1.  如果 list2 是 list1 的浅拷贝对象,则1内的不可变元素发生了改变,list2 不变;  
    		2.	如果 list1 内的可变元素发生了改变,则 list2 会跟着改变.
    
    '''
    


    深拷贝

    import copy
    
    list1 = ["a","b","c","d","f",["e","f","g"]]
    list2 = copy.deepcopy(list1)
    
    list1[2] = "plf"
    list1[5][0] = "lt"
    list1[5].append("xyz")
    
    print(list1)
    print(list2)
    
    
    '''
    ['a', 'b', 'plf', 'd', 'f', ['lt', 'f', 'g', 'xyz']]
    ['a', 'b', 'c', 'd', 'f', ['e', 'f', 'g']]
    '''
    
    
    
    '''
    	总结:
    		如果list2 是 list1 的深拷贝,那么list1 和list2 都是独立的个体,不存在任何关系
    
    '''
    

  • 相关阅读:
    全局数据库名称/数据库实例/SID 的区别
    【转载】ORACLE 10G DBCA创建脚本实现手动创建数据库
    apue 20130328
    apue 20130323
    visual c++6.0
    C语言
    apue 20130322
    apue 20130324
    apue 20130325
    C语言里的字符串解析
  • 原文地址:https://www.cnblogs.com/plf-Jack/p/10920216.html
Copyright © 2020-2023  润新知