zoukankan      html  css  js  c++  java
  • 深浅拷贝,小数据池,代码块

    一 深浅拷贝

    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

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

  • 相关阅读:
    Nginx负载均衡配置实例详解
    网络性能排查
    tensorflow、cuda、cudnn之间的版本对应关系
    PyPI可以使用的几个国内源
    Ceres配置(vs2013+Win10)
    vs2013+opencv3.2配置
    Ceres Solver 在win8+vs2013环境下的安装
    51Nod-1006 最长公共子序列Lcs
    Qt中OpenGL模块下将图片转化为纹理,并传入shader中
    harris角点检测
  • 原文地址:https://www.cnblogs.com/lav3nder/p/11801385.html
Copyright © 2011-2022 走看看