zoukankan      html  css  js  c++  java
  • 赋值,浅拷贝,深拷贝自己的理解

    赋值

    a=[1,2,3,4,[35,44,66]]
    b=a
    b[0]=11
    print(a)
    print(b)
    
    #[11, 2, 3, 4, [35, 44, 66]]
    #[11, 2, 3, 4, [35, 44, 66]]

    浅拷贝

    import copy
    a=[1,2,3,4,[35,44,66]]
    b=copy.copy(a)
    b[0]=11
    print('a',a)
    print('b',b)
    b[-1][0]=22
    print('a',a)
    print('b',b)
    
    #a [1, 2, 3, 4, [35, 44, 66]]
    #b [11, 2, 3, 4, [35, 44, 66]]
    #a [1, 2, 3, 4, [22, 44, 66]]
    #b [11, 2, 3, 4, [22, 44, 66]]

    拷贝了一份a给b,修改b的索引为1的元素,b变了,a没有变,因为数字是不可变的,修改b索引为-1的元素里的元素,发现a变了,因为列表是可变的

    深拷贝

    import copy
    a=[1,2,3,4,[35,44,66]]
    b=copy.deepcopy(a)
    b[0]=11
    print('a',a)
    print('b',b)
    b[-1][0]=22
    print('a',a)
    print('b',b)

    #a [1, 2, 3, 4, [35, 44, 66]]
    #b [11, 2, 3, 4, [35, 44, 66]]
    #a [1, 2, 3, 4, [35, 44, 66]]
    #b [11, 2, 3, 4, [22, 44, 66]]

    深拷贝是完全复制了一份,对a进行深拷贝给b,那么不管怎么改变b的元素和它元素中的子元素,a的元素和元素中的子元素都不会变

  • 相关阅读:
    codevs2606 约数和问题
    UOJ150 运输计划
    codevs1279 Guard 的无聊
    codevs1997 守卫者的挑战
    codevs1291 火车线路
    codevs1217 借教室
    codevs1281 Xn数列
    codevs1218 疫情控制
    codevs1199 开车旅行
    BZOJ1941 [Sdoi2010]Hide and Seek
  • 原文地址:https://www.cnblogs.com/z-x-y/p/9905619.html
Copyright © 2011-2022 走看看