zoukankan      html  css  js  c++  java
  • 小数据池,集合,深浅拷贝,数据类型补充

    小数据池

    1.什么是小数据池

    • 小数据池就是python中一种提高效率的方式,固定的数据类型使用同一个内存地址。
    • 小数据池支持str字符串,int数字,bool布尔值。

    2.小数据池是干嘛的:

    • id() id是查看空间的内存地址,就是给一个假的内存地址来方便判断是否在统一地址中。
    • 小数据池数字的支持范围在 -5 到 256
    • 代码块:
      • 一个文件,一个模块,一个函数,一个类都叫代码块,在cmd终端里每一行代码都叫做代码块
      • 在python中是用字典的方式存储的。
      • 一定要记住先执行代码块,不符合代码块的才会执行小数据池。
    • is 和 的区别: is 判断两个内存地址是否相同。 判断等号两边的值是否相同。 如果is判断相同两边一定相同,判断相同则is不一定相同。
    • 字符串:
      • 字符做乘法的时候总长度不能超过20*
      • 2.自定定义的都驻留*
      • 3.乘数为1的时候 就是赋值*
      • 4.python3.7 乘法的时候总长度不能超过4096*

    集合

    1.什么是集合。
    • 集合就是一个没有值的字典,唯一,无序的,元素要求可哈希的也就是不可变的。集合是无序的,集合是可变的。

    2.集合怎么用。

    • 增加:

      • 变量 . update("添加的内容") 迭代的添加
      • 变量 . add ("添加的内容")
    • 删除:

      • 变量 . pop() 随机删除,其实就是删除第一个元素
      • 变量 . remove() 通过元素删除
      • 变量 . clear() 清空
      • del 变量 删除整个集合
    • 改:删除之后再添加就是改了。

    • 查:直接使用for循环来查看。

    • 特点是天然去重 一行代码去重 print(list(set(li)))

    • 其他的操作:s1 = {1,2,3,4,5,6,7}

      ​ s2 = {3,4,5,6}

      • print(s1 - s2) #差集

      • print(s1 | s2) #并集 (合集)

      • print(s1 & s2) #交集

      • print(s1 ^ s2) #对称差集 -- 反交集

      • print(s1 > s2) # 超集 -- 父集

      • print(s1 < s2) # 子集

        # 冻结集合(可变 转换成 不可变)  -- 更不常用
        # f_s = frozenset({1,2,3,4,5})
        # # dic = {f_s:"1"}
        # # print(dic)
        

    深浅拷贝

    1.浅拷贝:copy

    • 只拷贝第一层。

    • 浅拷贝会创建一个新的列表(容器),新创建的列表中的元素和原列表的元素用的是同一个内存空间。

    • # 浅拷贝的时候只拷贝第一层元素
      # 浅拷贝在修改第一层元素(不可变数据类型)的时候,拷贝出来的新列表不进行改变
      # 浅拷贝在替换第一层元素(可变数据类型)的时候,拷贝出来的新列表不进行改变
      # 浅拷贝在修改第一层元素中的元素(第二层)的时候,拷贝出来的新列表进行改变
      
    • # 赋值:就是公用一个内存地址,改变任何一个值,都会发生改变。
      # 浅拷贝:就是拷贝第一层元素,改变和替换第一层元素,新拷贝出来的列表不进行改变。改变第一层元素中的元素都发生改变。
      # 深拷贝:不可变的数据类型和源列表指向的是同一个内存空间,可变的数据类型开辟一个新的内存空间,就是随便改和我没关系。
      

    2.深拷贝:import copy

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

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

    • 就是随便改,想干什么干什么互不影响。

    • #深拷贝
      import copy
      
      lst = [1, 2, 3, [5, 6, 7]]
      lst1 = copy.deepcopy(lst)
      lst1[-1].append(8)
      print(lst)
      print(lst1)
      

    数据类型的补充

    • . capitalize() 首字母大写。
    • . title() 每一个单词的首字母大写。
    • . count("a") 统计出现的次数。
    • . swapcase() 大小写转换。
    • . find() 查找,找不到就返回-1.
    • . index() 查找,找不到就直接报错。
    • . reverse() 反转。
    • . sort() 升序。
    • . sort(recerse=True) 降序。
    • 总结:
      • 字符串转成数字必须是十进制的数字。
      • 数字转成字符串可以直接转换。
      • 列表转成字符串用 ” “. join() 可迭代的对象中不能出现数字
      • 字符串转成列表用分割split
      • 除了字典,其他的数据类型之间可以直接相互转换。
      • 有序的:str,int,bool,list,tuple。
      • 无序的:dict,set。
      • 可变的:list,dict,set。
      • 不可变的:str,int,bool,tuple。
      • 访问的方式:
        • 直接访问:int,bool,set。
        • 顺序访问:list,tuple,str。
        • 通过键访问:dict。
    • 坑:
      • 循环删除索引的时候,要倒叙删除,否则会报错,或者结果不正确。
      • 循环添加列表元素的时候,会形成死循环。
      • 字典在循环的时候不能改变字典的大小
      • 先定义一个列表,循环列表 列表删除字典。
    • 编码的进阶:
      • encode() 编码
      • decode() 解码
      • 用什么编码集编码,就用什么编码集解码。
  • 相关阅读:
    SQL中Group By的使用
    sqlserver中distinct的用法(不重复的记录)
    ASP.NET控件的ID,ClientID,UniqueId的区别
    四大线程池的简单使用
    Dex文件方法数超过65536怎么破?
    Context的正确使用
    dialog的各类显示方法
    JAVA小记(一)
    Horspool和BM算法解析
    安卓中Canvas实现清屏效果
  • 原文地址:https://www.cnblogs.com/bhw888/p/11309967.html
Copyright © 2011-2022 走看看