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

    5.深浅拷贝

        Copy其实就是复制一份,也就是所谓的抄一份;

        深浅copy其实就是完全复制一份,部分复制一份的意思;

    浅拷贝copy

    同一代码块下:

    Import copy

    l1 = [1, "jason", True, (1,2,3), [22, 33]]

    l2 = l1.copy()

    >>>print(id(l1), id(l2))

    # 2713214468360 2713214524680

    >>>print(id(l1[-2]), id(l2[-2]))

    # 2547618888008 2547618888008

    >>>print(id(l1[-1]),id(l2[-1]))

    # 2547620322952 2547620322952

    ==================================================================

    # 不同代码块下:

    l1 = [1, "jason";, True, (1, 2, 3), [22, 33]]

    l2 = l1.copy()

    >>>print(id(l1), id(l2))

    1477183162696

    >>>print(id(l1[-2]), id(l2[-2]))

    1477181814032

    >>>print(id(l1[-1]), id(l2[-1]))

    1477183162504

    对于浅copy来说,只是在内存中重新创建了开辟了一个空间存放一个新列表,但是新列表中的元素与原列表中的元素是公用的

    浅copy只能拷贝一层数据

    深拷贝deepcopy

    同一代码块下
    

    import copy
    

    l1 = [1, "jason", True, (1,2,3), [22, 33]]
    

    l2 = copy.deepcopy(l1)
    

    >>>print(id(l1), id(l2))
    

    # 2788324482440 2788324483016
    

    >>>print(id(l1[0]),id(l2[0]))
    

    # 1470562768 1470562768
    

    >>>print(id(l1[-1]),id(l2[-1]))
    

    # 2788324482632 2788324482696
    

    >>>print(id(l1[-2]),id(l2[-2]))
    

    # 2788323047752 2788323047752
    

    ==================================================================

    # 不同代码块下
    

    import copy
    

    l1 = [1, "jason&", True, (1, 2, 3), [22, 33]]
    

    l2 = copy.deepcopy(l1)
    

    >>>print(id(l1), id(l2))
    

    1477183162632
    

    >>>print(id(0), id(0))
    

    1470562736
    

    >>>print(id(-2), id(-2))
    

    1470562672
    

    >>>print(id(l1[-1]), id(l2[-1]))
    

    1477183162312

        对于深copy来说,列表是在内存中重新创建的,列表中可变的数据类型是重新创建的,列表中的不可变的数据类型是公用的

    6.进制转换

    python进制转换

    hex 可以 十进制转16进制 二进制转16进制 结果都是字符串

    >>> hex(0b10)

    '0x2'

    >>> hex(10)

    '0xa'

    ==================================================================

    bin 可以十进制转2进制 16进制转2进制 结果都是字符串

    >>> bin(10)

    '0b1010'

    >>> bin(0x2)

    '0b10'

    int 可以16进制转换十进制 2进制转换十进制

    >>> int(0xe)

    >>> int(0b100)

    7.三元运算

    python的三元运算:

    变量名 = 变量1 if 条件判断成立 else 变量2

    ==================================================================

    解释:条件成立 变量名值为变量1 否则为变量2

    ==================================================================

    a=1

    b=2

    if a<b:

    #一般条件语句的写法

    k=a

    else:

    k=b

    ==================================================================

    c=a if a<b else b

    #三目运算符的写法

  • 相关阅读:
    深度剖析Byteart Retail案例
    REVIT使用中遇到的各种问题汇总
    常用设计规范
    编程修养
    Linux、Windows静态编译ffmpeg 4.4.1、x264、x265等编解码库的脚本
    程序员的灯下黑:重知识轻技术
    GitHub 公布 2021 Top 10 博文「GitHub 热点速览」
    狠人!标星 3.4 万的项目说删就删,几行代码搞崩数万个开源项目
    重装系统前备份fstab
    Ubuntu系统下制作U盘启动盘
  • 原文地址:https://www.cnblogs.com/cable-run/p/12161490.html
Copyright © 2011-2022 走看看