• 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

    #三目运算符的写法

  • 相关阅读:
    Components controls 区别
    lazarus 2016 2月18 4:22:35 支持android开发了, 既ios,linux,macosx,window,web 后 囊括一切啦。 哈哈
    Delphi MlSkin V1.1 发布啦! 它能让你的程序拥有像QQ一样多彩炫丽的外观!
    Tclientdataset的CloneCursor问题 clientdataset 复制 赋值 的问题
    字符串 映射 函数
    字符串 映射相应的 函数 字符串驱动技术—— MethodAddress , MethodName , ObjectInvoke
    一分钟了解nohup和&的功效
    Linux shell标准输入,标准输出,错误输出
    (一)shell编程之执行脚本的三种方式
    Shell:执行脚本文件方法
  • 原文地址:https://www.cnblogs.com/cable-run/p/12161490.html
Copyright © 2020-2023  润新知