• 第二章 集合 字符编码


    集合


    定义:有一个或多个确定的元素所构成的整体叫做集合.
    特征:

    1. 确定性(元素必须可hsah)
    2. 互异性(去重)
    3. 无序性(集合中的元素没有先后之分)
    

    集合存在的意义就在于去重和关系运算

    集合的创建:

    • s = {} 创建一个字典
    • s = {1} 创建一个集合

    集合的关系运算

    • 交集
      • 取出两个集合中共有的元素
      • s.intersection(s1)
      • s & s1
    • 差集
      • s.difference(s1)
      • s - s1
      • 从s中把s1中有的元素都去掉,通俗来讲就是:你有的我通通不要.
    • 并集
      • s.union(s1)
      • s | s1
      • 合并s和s1成一个新的集合
    • 对称差集
      • s.symmetric_difference(s1)
      • s ^ s1
      • 合并s和s1,并且去掉两个共有的元素成一个新集合
    • 包含关系
      • 两个集合之间一般有三种关系,相交,包含,不相交.
        • set.isdisjoint(s) 判断两个集合是不是不想交
        • set.issuperset(s) 判断集合是不是包含其他集合,等同意 a<=b
        • set.issubset(s) 判断集合是不是被其他集合包含,等同于a<=b

    字符编码


    看这篇文章前,你应该已经知道了为什么有编码,以及编码的种类情况

    • ASCII 占1个字节,只支持英文
    • GB2312 占2个字节,支持6700+汉字
    • GBK GB2312的升级版,支持21000+汉字
    • Shift-JIS 日本字符
    • ks_c_5601-1987 韩国编码
    • TIS-620 泰国编码

    由于每个国家都有自己的字符,所以其对应关系也涵盖了自己国家的字符,但是以上编码都存在局限性,即:仅涵盖本国字符,无其他国家字符的对应关系。应运而生出现了万国码,他涵盖了全球所有的文字和二进制的对应关系,

    Unicode 2-4字节 已经收录136690个字符,并还在一直不断扩张中...

    • Unicode 起到了2个作用:

    直接支持全球所有语言,每个国家都可以不用再使用自己之前的旧编码了,用unicode就可以了。(就跟英语是全球统一语言一样)
    unicode包含了跟全球所有国家编码的映射关系,为什么呢?后面再讲
    Unicode解决了字符和二进制的对应关系,但是使用unicode表示一个字符,太浪费空间。例如:利用unicode表示“Python”需要12个字节才能表示,比原来ASCII表示增加了1倍。

    由于计算机的内存比较大,并且字符串在内容中表示时也不会特别大,所以内容可以使用unicode来处理,但是存储和网络传输时一般数据都会非常多,那么增加1倍将是无法容忍的!!!

    为了解决存储和网络传输的问题,出现了Unicode Transformation Format,学术名UTF,即:对unicode中的进行转换,以便于在存储和网络传输时可以节省空间!

    • UTF-8: 使用1、2、3、4个字节表示所有字符;优先使用1个字符、无法满足则使增加一个字节,最多4个字节。英文占1个字节、欧洲语系占2个、东亚占3个,其它及特殊字符占4个
    • UTF-16: 使用2、4个字节表示所有字符;优先使用2个字节,否则使用4个字节表示。
    • UTF-32: 使用4个字节表示所有字符;

    总结:UTF 是为unicode编码 设计 的一种 在存储 和传输时节省空间的编码方案。

    Python3的执行过程

    • 解释器找到代码文件,把代码字符串按文件头定义的编码加载到内存,转成unicode
    • 把代码字符串按照语法规则进行解释,
    • 所有的变量字符都会以unicode编码声明**

    想在py3里看字符,必须得是unicode编码,其它编码一律按bytes格式展示。

    最后再提示一下,Python只要出现各种编码问题,无非是哪里的编码设置出错了

    常见编码错误的原因有:

    1. Python解释器的默认编码
    2. Python源文件文件编码
    3. Terminal使用的编码
    4. 操作系统的语言设置
    5. 掌握了编码之前的关系后,挨个排错就好啦 

    小结扩展


    基本数据类型

    可变数据类型不可变数据类型
    list 数字类(bool,int,float,complex)
    dict str
    set tuple
    . frozenset

    扩展数据类型collectins

    1. namedtuple(): 生成可以使用名字来访问元素内容的tuple子类
    2. deque:双端队列,可以快速的从另外一侧追加和推出对象
    3. Counter:计数器,主要用来计数
    4. OrderedDict:有序字典
    5. defaultdict:带有默认值的字典
  • 相关阅读:
    pywinauto首页、文档和下载
    Android UI自动化测试最佳实践
    5个最佳的Android测试框架(带示例) – 码农网
    (转)使用graphviz绘制流程图
    使用 Graphviz 生成自动化系统图
    程序员的绘图利器 — Graphviz
    绘图工具graphviz学习使用
    Git Book 中文版
    [git] 更新到某个指定版本
    LindDotNetCore~Aspect面向方面编程
  • 原文地址:https://www.cnblogs.com/dc0012/p/8822971.html
Copyright © 2020-2023  润新知