zoukankan      html  css  js  c++  java
  • 小数据池和深浅拷贝

    小数据池

    先执行代码块,不符合代码块才使用小数据池

    数字
    1. 支持范围-5~256

    2. is 和 ==

      is:判断两个内存地址是否相同

      ==:判断两个值是不是相等

      is相同的,==一定成立

      ==相同的,is不一定成立

    字符串
    1. 字符串在做乘法的时候总长度不能超过20
    2. 自己定义的字符串,长度不限制,字符串必须由数字,字母,下划线组成
    3. 特殊字符(中文除外)最多允许有一个驻留
    4. 字符串*1就是赋值

    代码块

    数字

    全部驻留

    字符串
    1. 字符做乘法,总长度不能超过20
    2. 自定义的都驻留
    3. 乘数为1的时候,是赋值
    总结
    1. 小数据池--支持:str,int,bool

    2. 小数据池数字:-5~256

    3. 小数据池字符串:乘法时长度不能超过20

    如何自己驻留:

    需要使用python模块:from sys import intern:

    集合

    定义
    1. 集合就是个没有值的字典,遵循:唯一,无序,元素可哈希
    2. 集合是无序的
    用法
      1. s.update()#迭代添加
      2. s.add()
      3. 不支持加法
      1. s.pop() #随机删除
      2. s.remove("元素") #通过元素删除
      3. del s #删除整个集合
      4. clear #清空
    1. 先删,再加

    2. for

    3. 去重

      原理时集合中的元素唯一

    4. 其他操作

      1. 差集 s1-s2
      2. 并集 s1 | s2
      3. 交集 s1 & s2
      4. 对称差集--反交集 s1 ^ s2
      5. print(s1 > s2) 超集 判断s2是不是s1的子集
    5. 冻结集合

      可变转换成不可变

      frozenset({1,2,3,4,5})

    6. 去重

      li=[]

      print(list(set(li)))

    深浅拷贝

    1. 定义

      1. 赋值:用的是同一个地址

      2. 浅拷贝:只拷贝第一层

        会创建一个新的容器,两个列表公用一份地址

        修改不可变数据类型,不变动,修改可变数据类型,变动

      3. 深拷贝 :拷贝了之后,就和之前的拷贝目标没什么关系,地址不同,修改不变动

    2. 怎么用

       dic = {}   # "v":4
       li = []    #[{"v":0},{"v":1},{"v":2},{"v":3},{"v":4}]
       for i in range(0,5):
           dic["v"] = i
           li.append(dic)
       print(li)
      
       深拷贝:
       import copy
       li = [3,4,5,[1,2,3,4],6,7,8,{"k":'v'}]
       l2 = copy.deepcopy(li)
       li[-1]['k'] = "a"
       print(li)
       print(l2)
      
    3. 在哪用

      1. 不让修改原数据的时候
  • 相关阅读:
    安装触摸板驱动导致系统无法开机
    TensorBoard的使用
    TensorFlow 编程基础
    在Anaconda3下安装(CPU版)TensorFlow(清华镜像源)
    C 程序
    CodeBlocks 断点调试
    数字图像处理之复原处理
    数字图像处理之频域图像增强
    数字图像处理之傅里叶变换
    算法导论中的四种基本排序
  • 原文地址:https://www.cnblogs.com/li-dong-yu-95-11-21/p/11003658.html
Copyright © 2011-2022 走看看