• 第八天


    今日内容

    了解:

      队列:先存进去的数据先取出来
      堆栈:先存进去的数据后取出来
    

    一、集合:

      ======================================基本使用======================================
      1、用途:去重、关系运算。
                  ps:其中集合去重无法保准顺序,并只能针对不可变元素去重。
    
      2、定义方式:在{,}内用逗号隔开多个元素,集合内元素的特征有三个
                  (1)集合内元素必须是不可变元素
                  (2)集合内元素不能重复
                  (3)集合内元素无序
    
      3、常用操作+内置的方法:
                  优先掌握的操作:
                  1、长度len
                  s1 = {1,2,3}
                  print(len(s1))   # 3
                  2、成员运算in和not in
                  s1 = {1,2,3}
                  print(3 in s1)       # True
                  print(3 not in s1)   # False
    
                  1、|并集(合集):两个集合并到一起
                  2、&交集:取两个集合的共同部分
                  3、-差集:一个集合减掉与另一个集合共同的部分
                  4、^对称差集(交叉补集):求两个集合互相减,然后再并到一起
                  5、==
                  6、父集:>,>=  当一个集合完全包含了另外一个集合,该集合才能称为爹
                  s1 = {1,2,3}
                  s2 = {4,5,6}
                  print(s1 >= s2)   # False
                  print(s1.issuperset(s2))
                  7、子集:<,<=
                  print(s1 <= s2)   # False
                  print(s1.issubset(s2))
    
                  举例:
                  pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
                  linuxs={'wupeiqi','oldboy','gangdan'}
    
                  list1 = pythons | linuxs   # {'egon', 'yuanhao', 'wupeiqi', 'oldboy', 'biubiu', 'gangdan', 'alex'}
                  print(pythons.intersection(linuxs))
                  print(pythons.intersection_update(linuxs))
    
                  list2 = pythons & linuxs   # {'wupeiqi', 'gangdan'}
                  print(pythons.union(linuxs))
    
                  list3 = pythons - linuxs   # {'yuanhao', 'alex', 'egon', 'biubiu'}
                  print(pythons.difference(linuxs))
    
                  list4 = linuxs - pythons   # {'oldboy'}
                  print(linuxs.difference(pythons))
    
                  list5 = pythons ^ linuxs   # {'egon', 'oldboy', 'yuanhao', 'biubiu', 'alex'}
                  print(pythons.symmetric_difference(linuxs))
    
                  需要掌握的操作:
                  s1 = {1,2,3}
    
                  1、s1.update()
                  s1.update({3,4,5})
                  print(s1)    # {1, 2, 3, 4, 5}
    
                  2、s1.add()
                  s1.add(4)
                  print(s1)      # {1, 2, 3, 4}
    
                  3、删除
                  3.1  remove(3)
                  s1.remove(3)
                  print(s1)       # {1, 2}
                  3.2  pop()
                  res =  s1.pop()   # 随机删除 返回删除的值
                  print(s1)
                  print(res)
                  3.3  discard()
                  s1.discard(444444)   # 删除不存在的元素不会报错
                  print(s1)    # {1, 2, 3}
                  3.4  clear()
                  s1.clear()
                  print(s1)      # set()
    
                  4、copy
                  res = s1.copy()
                  print(res)      # {1, 2, 3}
    
                  5、isdisjoint()
                  s1 = {1,2,3}
                  s2 = {4,5,6}
                  print(s1.isdisjoint(s2))  # True
    
      ======================================该类型总结====================================
      存多个值
    
      无序
    
      集合类型本身是可变的,里面的元素是可迭代的(能被for循环)
    

    二、文件处理

    1、什么是文件

      文件时操作系统提供给用户或者应用程序操作硬盘的一种机制
      python中文件是对象
      Linux文件:一切设备都可以看成是文件
      文件的作用:把一些数据以文件的形式存储起来,文件由文件系统进行管理,当程序下一次执行的时候,通过文件系统快速找到对应的文件,而找到对应的数据,省时省力。
    

    2、为何要用文件

      读写文件 ---> 存取硬盘
      应用程序:  open()
      操作系统:  打开文件
      计算机硬件:  硬盘空间
    

    3、如何用文件

    1)打开文件

      方式一:open
      举例:open("文件路径(可以是绝对路径,也可以是相对路径)",mode:"打开文件的方式(rwa,tb),encoding="字符编码格式")  #打开文件
      可以将这个值做变量 f = open("文件路径(可以是绝对路径,也可以是相对路径)",mode:"打开文件的方式(rwa,tb),encoding="字符编码格式")
      这时 f=值 叫做文件句柄/文件对象,可以对文件句柄做操作
      f.close()             #关闭文件,每次用open打开文件操作完之后都要记得关闭文件,不然耗费操作系统的资源,如果打开文件数量过多时会打不开。
    
      方式二:with open
      举例 with open("文件路径(可以是绝对路径,也可以是相对路径)",mode:"打开文件的方式(rwa,tb),encoding="字符编码格式") as f:
      可以打开多个文件,用逗号隔开,如果打开文件数量多的话每个结尾可以加一个/,换行表示。
      with(上下文管理),这个方式打开文件会在操作完文件之后自动关闭文件,无需手动关闭。
    

    三、字符编码

    1、储备知识:

      运行python程序的三个步骤:python.py
      1、先启动python解释器
      2、解释器会将文本文件a.py内容由硬盘读入内存
      3、解释器会解释执行刚刚读入内存的内容,识别python语法
    

    2、什么是字符编码:

      人类的字符 ----- 编码 -----> 数字
    
      人类的字符 <----- 解码 ----- 数字
    
      编码与解码的过程必须参照字符编码表
    

    3、为何要学习字符编码:

      为了解决运行python程序三个阶段中2、3阶段有可能出现的乱码问题
    

    4、字符编码表发展史

      一家独大:
    
            ASCII:只能识别英文字符
            8bit 对应一个英文字符     1byte = 8bit (byte:字节   bit:(二进制)位,比特)
    
    
    
      天下大乱
    
            GBK:能识别汉子与英文
    
            用2Bytes对应一个字符
    
            Shift-JIS:日文与英文
    
            Euc -KR:韩文与英文
    
            英文字符----->内存:ASCII格式的二进制----->硬盘:ASCII格式的二进制
    
            中文字符、英文字符----->内存:gbk格式的二进制----->硬盘:gbk格式的二进制
    
            日文字符、英文字符----->内存:shift-JIS格式的二进制----->硬盘:shift-JIS格式的二进制
    
            万国字符----->内存:unicode格式的二进制----->硬盘:utf-8格式的二进制
    
    
    
      分久必合
    
            unicode:1、万国字符
    
            2、兼容老的字符编码表
    

    结论:

      如何保证不乱码
    
      1、编码与解码必须参照同一张字符编码表
  • 相关阅读:
    C++ template —— 模板中的名称(三)
    关于烂代码的那些事(下)
    关于烂代码的那些事(中)
    关于烂代码的那些事(上)
    比尔的村庄:创业是选择做赚钱的事,还是值钱的事?
    C++ template —— 深入模板基础(二)
    依赖倒置,控制反转,依赖注入
    JAVA中限制接口流量、并发的方法
    SVN同步时忽略特定文件或文件夹
    MySQL中查询表及索引大小的方法
  • 原文地址:https://www.cnblogs.com/kk942260238/p/14186125.html
Copyright © 2020-2023  润新知