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

    #三目运算符的写法

  • 相关阅读:
    Linux异常现场--pt_regs浅析
    内核调试--确认结构体的size和结构体成员的偏移
    Linux内核中root_domain的建立与初始化
    solr学习笔记-全量更新与增量更新,去除html标签
    oracle 替换clob里面的某个特定的字符串
    oracle重置序列从1开始
    oracle提取汉字拼音首字母
    layer.open的yes函数中获取弹出层(子集iframe)中的元素或参数
    java.util.Date日期时间工具类
    js操作将数字转换成 , 逗号分割的字符串并追加‘万’字
  • 原文地址:https://www.cnblogs.com/cable-run/p/12161490.html
Copyright © 2011-2022 走看看