• 小数据池 集合 深浅拷贝


    小数据池 集合 深浅拷贝

    一、小数据池

    • 定义:小数据池是Python中一种提高效率的方式,固定数据类型使用同一个内存地址,支持数据类型:str,int,bool是一种缓存机制,特被称为驻留机制,各大编程语言中都有类似的东西。

    • id() ----- 查看元素的内存地址
    • is 与 == 的区别
      • is 判断两个元素的内存地址是否相等
      • == 判断等号左右两边的元素的值是否相等
    • 小数据池的规则
      • 数字:-5~256
      • 字符串:
        • 字符串在做乘法(乘数不为1)的时候总长度不能超过20
        • 自己定义的字符串的长度不受限制,但字符串必须由字母、数字、下划线组成。
        • 特殊字符(中文除外)定义1个的时候,进行驻留
    • 代码块:一个文件,一个模块,一个函数,一个类,终端中每一行都是一个代码块
      • 规则
        • 数字:全部驻留
        • 字符串:
          1. 自己定义的字符串全部驻留
          2. 字符串做乘法(乘数不为1)时总长度不超过20
          3. Python3.7以上版本乘法的时候总长度不能超过4096

    二、set集合

    • 定义:集合就是一个没有value的字典,无序,去重,可哈希,集合是一个可变数据类型

    • 语法:{1,2,3,4,5}

    • 集合的相关操作

      s = {1,2,3,4,5}

      • s.update(可迭代数据类型)   ---  迭代添加
        s.add('haven')      -----   单个添加
        
      • # s.pop()       ---- 随机删除
        # s.remove(3)   ---- 指定元素删除
        # s.clear()     ---- 清空(注:结果为set(),为了与字典区分
        # del s         ---- 删除整个集合
        
      • 只能删了再加

      • for循环遍历

      • 其他操作
        s1 = {1,2,3,4}
        s2 = {3,4,5,6}
        print(s1-s2)  --- 差集 1,2
        print(s1|s2)  --- 并集 1,2,3,4,5,6
        print(s1&s2)  --- 交集 3,4
        print(s1^s2)  --- 反交集 1,2,5,6
        print(s1>s2)  --- 判断s1是否为s2的父集  返回布尔值
        print(s1<s2)  --- 判断s1是否为s2的子集  返回布尔值
        s3 = frozenset({1,2,3,4,5,6}) --- 冻结集合,变成不可变数据类型
        
      • 重要用法---集合去重
        lis = [1,2,2,3,2,4,5,6,5,6,7]
        print(list(set(lis)))  --- 结果[1, 2, 3, 4, 5, 6, 7]  去重是数组最重要的用法
        

    三、深浅拷贝

    • 赋值 =

      赋值没有创建新的空间,是多个变量指向同一个内存地址

    • 浅拷贝
      • l2 = l1[:] 和 l2 = l1.copy()
      • 只拷贝第一层元素
      • 会创建一个新的容器,容器中的元素和原来容器中的元素指向同一个内存地址
    • 深拷贝
      • import copy

        l2 = copy.deepcopy(l1)

      • 不可变的数据类型和原数据指向同一空间

      • 可变数据类型会创建一个新的空间

    • 总结:
      • 浅拷贝只为最外层可变数据类型创建新的空间
      • 深拷贝会为每一层可变数据类型创建新的空间
  • 相关阅读:
    什么叫委托
    什么是继承
    什么叫多态
    委托的了解
    什么是数组
    工作记录之 oracle去重的三个方法
    实例分析J2ME网络编程的两种方法
    在无线J2ME设备上实现超文本传输协议
    java与C、C++进行通信的一些问题
    如何配置Wiindows live writer
  • 原文地址:https://www.cnblogs.com/maqian/p/11904738.html
Copyright © 2020-2023  润新知