码迷,mamicode.com
首页 > 其他好文 > 详细

深浅拷贝

时间:2018-09-11 21:26:41      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:lap   hid   赋值   color   deepcopy   分享图片   div   alt   str   

赋值:

  • 没有创建新的对象,多个变量指向一个对象,与拷贝无关
  • 技术分享图片
    a=[1,2,3,[4,5]]
    b=a
    print(a,id(a))#[1, 2, 3, [4, 5]] 1807996384072
    print(b,id(b))#[1, 2, 3, [4, 5]] 1807996384072
    
    a.pop()
    print(a,id(a))#[1, 2, 3] 1807996384072
    print(b,id(b))#[1, 2, 3] 1807996384072
    View Code技术分享图片View Code

浅拷贝:

  • 只拷贝第一层,第二层不会被拷贝
  • 技术分享图片
    l1=[1,2,3,[barry,alex]]
    l2=l1.copy()
    print(l1,id(l1))#[1, 2, 3, [‘barry‘, ‘alex‘]] 2578599060616
    print(l2,id(l2))#[1, 2, 3, [‘barry‘, ‘alex‘]] 2578599889480
    l1.append(wusir)
    print(l1,id(l1))#[1, 2, 3, [‘barry‘, ‘alex‘], ‘wusir‘] 2578599060616
    print(l2,id(l2))#[1, 2, 3, [‘barry‘, ‘alex‘]] 2578599889480
    l1[0]=333
    print(l1,id(l1))#[333, 2, 3, [‘barry‘, ‘alex‘]] 2578599060616
    print(l2,id(l2))#[1, 2, 3, [‘barry‘, ‘alex‘]] 2578599889480
    内存地址不同,被拷贝的对象作出改变,另一个不改变
    View Code

深拷贝:

  • 创建一个新的对象,把内部所有的元素都进行拷贝,不会产生一个变另一个跟着变
  • 技术分享图片
    import copy
    l1=[1,2,3,[barry,alex]]
    l2=copy.deepcopy(l1)
    print(l1,id(l1))#[1, 2, 3, [‘barry‘, ‘alex‘]] 2037159109640
    print(l2,id(l2))#[1, 2, 3, [‘barry‘, ‘alex‘]] 2037157644168
    
    l1[1]=222
    print(l1,id(l1))#[1, 222, 3, [‘barry‘, ‘alex‘]] 2037159109640
    print(l2,id(l2))#[1, 2, 3, [‘barry‘, ‘alex‘]] 2037157644168
    View Code

深浅拷贝

标签:lap   hid   赋值   color   deepcopy   分享图片   div   alt   str   

原文地址:https://www.cnblogs.com/li-jj/p/9629884.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!