zoukankan      html  css  js  c++  java
  • python学习之深浅拷贝

    深浅拷贝

    浅拷贝:

    1、针对的是可变数据类型:list、dict、set  ,不可变数据类型int、str、tuple、bool 是没有拷贝一说的,他们都没copy() 方法

    2、浅拷贝后是在内存地址中分配了一份新的地址,且浅拷贝只拷贝了第一层,第二层不会拷贝,故第二层如果改变,原数据及浅拷贝后的数据也将改变

    3、= 赋值不是浅拷贝,[:] 切片是浅拷贝

    a = [11,22,[11,22]]

    b = a  

    注:以上称为赋值,只是将a,b都指向了同一个内存地址

    a.append(33)

    print(b)

    >>> [11,22,[11,22],33]   还是一起改变,b和a都是列表的内存地址的两个别名

    c = a.copy()   用方法copy是浅拷贝,id(a)  与 id(c)  的内存地址是不同的

    3、切片是浅拷贝

    1 lis = [11,22,[11,22]]
    2 qie = lis[:]
    3 lis[2].append(33)
    4 print(lis,qie) # [11, 22, [11, 22, 33]] [11, 22, [11, 22, 33]]
    5 print(id(lis),id(qie))   # 1482689615624 1482689615752

    深拷贝:

    就是将原文件内部元素完全拷贝,不会将因为第二层元素改变,另一个也会改变

    深拷贝方法:

    import  copy

    list_new = copy.deepcopy()

  • 相关阅读:
    Shell脚本实现用户数据导入
    Sping Cloud 微服务框架学习
    Redis学习笔记
    HTML+CSS实现简单三级菜单
    CSS Float浮动所带来的奇怪现象
    CSS如何清除浮动流的多种方案
    ECMAScript/JS 基础知识讲解
    Python的生成器
    Python包的导入说明
    Paramiko模块简单使用
  • 原文地址:https://www.cnblogs.com/sunxiuwen/p/9179293.html
Copyright © 2011-2022 走看看