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

    深浅拷贝

    浅拷贝

    l1 = [1,2[1,2]]

    l1 = [1, 2, [1,2]]
    # 分析深浅拷贝
    

    ​ 浅拷贝对于不可变的是的数据类型是指针指向沿用原来的,对可变的数据类型还是沿用原来的对象,所以对外不可变的数据类型不会相互改变这一点和深拷贝也是一样的,而不同的是浅拷贝对于可变的数据类型是沿用而不是重新指向一个新的列表,所以会相互影响相互牵制。一个改变变可变类型也会改变另一个的内部值。

    ​ 内部的值相互可以改变,也就是一方改另一方也随之改变,外部的值为不可变数据类型,指针还是指向原来的值

    # 2.区别深浅拷贝
    # l1[0] = 222
    # print(l1,id(l1))  # [222, 2, ['al', 'js']] 2130503833736
    # print(l3,id(l3))
    # [222, 2, ['al', 'js']]  # [1, 2, ['al', 'js']] 2130503843720
    # [1, 2, ['al', 'js']]
    
    # l3[0] =333
    # l3[2][0] = 'xx'
    # print(l1)
    # print(l3)
    
    # [1, 2, ['xx', 'js']]
    # [1, 2, ['xx', 'js']]
    
    l4 = copy.deepcopy(l1)  # >>>深拷贝id也会变
    
    # 2.
    # l1[0]=222
    # l1[2][1] = 'ss'
    # print(l1)
    # print(l4)
    
    # l4[2][0] = 33
    # print(l1)
    # print(l4)
    # l1[2][1] = 44
    # print(l1)
    # print(l4)
    # [1, 2, [1, 44]]
    # [1, 2, [1, 2]]
    

    img

    深拷贝是对于不可变数据类型是指针指向,而对于可变的数据类型,是重新开一个类型重新指向,值还是沿用原指针指向的值,不同的是可变的数据类型之间不再相互随着改变而改变。
    

      

    img

    千里之行,始于足下。
  • 相关阅读:
    MySQL灾备切换
    crontab 定时任务
    Mysql常用命令 详细整理版
    linux 常用命令
    shell逻辑运算总结, 包括[[]]与[]的区别,&&与-a的区别,||与-o的区别
    linux端口详解大全
    编译安装php5.6
    linux给用户添加sudo权限
    Effective C#(二)
    Effective C#(一)
  • 原文地址:https://www.cnblogs.com/jincoco/p/11598773.html
Copyright © 2011-2022 走看看