• 深浅拷贝,小数据池,代码块


    一 深浅拷贝

    1. 浅拷贝

    lst = [1,2,3,[4,5,6]]
    lst1 = lst.copy()   # lst1 = lst[:] 新开辟一块空间
    lst[-1].append(8)
    print(lst)
    print(lst1)
    

    输出结果:

    [1, 2, 3, [4, 5, 6, 8]]
    [1, 2, 3, [4, 5, 6, 8]]

    字典的值是列表,列表里的元素是第二层元素

    dic = {'123':[1,2,3,[4,5,6]]}
    dic1 = dic.copy()
    dic['123'].append(8)
    print(dic)
    print(dic1)
    

    输出结果:

    {'123': [1, 2, 3, [4, 5, 6], 8]}
    {'123': [1, 2, 3, [4, 5, 6], 8]}

    lst = [1,2,3,[4,5,6]]
    lst1 = lst.copy()     #新开辟一块空间
    lst[-1] = 8    #  lst.append(8)
    print(lst)
    print(lst1)
    

    输出结果:

    [1, 2, 3, 8] # [1, 2, 3, [4, 5, 6], 8]
    [1, 2, 3, [4, 5, 6]] # [1, 2, 3, [4, 5, 6]]

    浅拷贝的时候,只会开辟一个新的列表空间,其他元素使用都是原列表的中的元素

    浅拷贝在修改新拷贝的列表中可变(不可变)元素的时候,原列表不进行改变

    浅拷贝在对新拷贝的列表中可变数据类型进行增删改的时候,原列表进行改变

    浅拷贝的时候只拷贝第一层元素

    2. 深拷贝

    import copy  #导入
    lst = [1,2,3,[4,5,6]]
    lst1 = copy.deepcopy(lst)
    lst[-1].append(8)
    print(lst)
    print(lst1)
    

    输出结果:

    [1, 2, 3, [4, 5, 6, 8]]
    [1, 2, 3, [4, 5, 6]]

    深拷贝要先开辟一个新的空间(列表),不可变数据公用,可变数据类型再次开辟一个新的空间,空间里的值是不可变数据使用的是公用的,可变数据类型再次开辟一个新的空间

    对原数据进行修改,深拷贝的内容不进行改变

    二 小数据池 缓存机制(驻留机制)

    == 判断两边内容是否相等

    is 基于内存地址进行判断

    支持的类型:数字,字符串,布尔值

    小数据池的数字范围:-5 ~ 256

    字符串:在同一个代码块下,只要内容相同就采用相同的内存地址,在做乘法的时候,总长度不能超过20(乘1除外),乘法的时候中文,特殊符号只能乘0,python3.7乘法的时候总长不能超过4096

    布尔值:在同一个代码块下,只要内容相同就采用相同的内存地址

    小数据池的验证方法,必须脱离代码块才能进行验证

    先执行代码块的规则,再执行小数据池的规则 (驻留机制)

    三 代码块

    一个文件,一个函数,一个类,一个模块,终端中每一行是一个代码块

    支持的数据类型:数字,字符串,布尔会

    数字:在同一个代码块下,只要内容相同就采用相同的内存地址(-6及以下就不是),数字在做乘法的时候范围:-5 ~ 256,数字在做乘法的时候不能使用浮点数

    字符串:在同一个代码块下,只要内容相同就采用相同的内存地址,在做乘法的时候,总长度不能超过20(乘1除外),乘法的时候中文,特殊符号乘1或0

    布尔值:在同一个代码块下,只要内容相同就采用相同的内存地址

  • 相关阅读:
    N in 1 & 多重引导光盘制作
    可启动 ISO 合并、Windows 安装光盘合集
    VS 2005 VC++ 文件类型
    Windows 无人值守安装应答文件详解
    30种下载Youtube视频的方法
    解释YOUTUBE FLV 地址
    Windows下进程通信方式[转]
    进程通讯 DELPHI的类实现
    c#.net常用函数列表
    Javascript, How to make a Dress Up Game (Drag and Drop)
  • 原文地址:https://www.cnblogs.com/lav3nder/p/11801385.html
Copyright © 2020-2023  润新知