第二章 集合 字符编码

集合



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

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:带有默认值的字典

原文地址:https://www.cnblogs.com/dc0012/p/8822971.html

时间: 2024-09-30 11:19:40

第二章 集合 字符编码的相关文章

集合+字符编码

集合及关系运算 用途:关系运算,去重 定义方式:s={},花括号内用逗号隔开多个元素,每一个元素都必须是不可变类型. 强调: 集合内的元素无序 集合内的元素不能改变 集合内的元素必须是不可变元素 单纯的用集合去重: 去重的目标所包含的值必须都为不可变型 去重的集合会打乱原来的顺序 优先掌握的操作 长度len 成员运算 in和not in 合集| 四交集& 差集- 对称差集 == 父集 子集 内置方法: .add .pop .remove .clear .copy .difference .dis

元祖/集合/字符编码

元祖:该类型总结:/存多个值/有序/不可变 特点:不能改,只能取/但是元祖里面的列表可以改type:tuple1 用途:记录多个值,当多个值没有改的需求,此时用元组更合适2 定义方式:在()内用逗号分隔开多个任意类型的值t=(1,1.3,'xx',('a','b'),[1,2]) #t=tuple((1,1.3,'xx',('a','b'),[1,2]))3.常用操作+内置的方法1.按索引取值(正向取+反向取):只能取a=(1,2,3,4,5)print(a[0:4])#(1, 2, 3, 4)

第二章 醒来 《编码世界》

宋海穿越到这个编程世界上的这个人,也叫宋海,是百花谷大长老当年在海边捡的孤儿,因为当时脖子上挂着一个写着宋的宝石,然后大长老就给这个孤儿取名叫宋海. 心里想着,宋海急忙摸了摸脖子上的东西,东西还在,他坐了起来看了看,挺大的一块蓝宝石.应该能买个好几七万吧,宋海心里想着,“哈哈,这下发了.”他还大笑了起来. 他突然停止了大笑,又一副郁闷的表情“哎,我现在在异世界啊,想买宝石也不知道哪里买啊.” 他努力回想着,回想着编程世界宋海晕倒之前的事.昨天宋海和路平在一起. 说起路平其实和他一样也是个孤儿,也

LF D2 第2章 数据类型 字符编码

浮点数 浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数.具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数的整数次幂得到,这种表示方法类似于基数为10的科学计数法 列表 列表是一个数据的集合,集合内可以放任何数据类型,可以对集合进行方便的增删改查操作 1.创建 #方法1 L1 = []#定义空列表 L2 = ['a','b','c','d']#存4个值,索引为0-3 L3 = ['abc',['def','ghi']]#嵌套列表 #方法2 L4 = li

Python2.7字符编码详解

一. 字符编码基础 为明确概念,将字符集的编码模型分为以下4个层次: 抽象字符清单(Abstract Character Repertoire, ACR):待编码文字和符号的无序集合,包括各国文字.标点.图形符号.数字等. 已编码字符集(Coded Character Set, CCS):从抽象字符清单到非负整数码点(code point)集合的映射. 字符编码格式(Character Encoding Form, CEF):从码点集合到指定宽度(如32比特整数)编码单元(code unit)的

第二章、二进制运算、字符编码、数据类型总结

第二章 二进制运算.字符编码.数据类型 二进制与十进制转换 ASCII表 文字转2进制 计算机容量单位 字符编码 列表 创建: a = list() a = [] 查询: L2[2] 通过索引取值 L2[-1] 通过索引从列表右边开始取值 L2.index('a') 返回指定元素的索引值,从左右查找,找到第一个匹配值,则返回. L2.count('a') 统计指定元素的个数 切片: L2[0:3] 返回从索引0至3的元素,不包括3,顾头不顾尾 L2[0:-1] 返回从索引0至最后一个值,不包括最

python 第二章 二进制运算、字符编码、数据类型

>>> len(s.ljust(50,'*'))50>>> 1.二进制转换: bin(342) '0b101010110' 2.ASCII码与二进制: 每一个ASCII码都是用8位表示,ASCII码一共有255个.每一位0或者1所占的空间单位为bit(比特),这是计算机中最小的表示单位,8位表示一个字节. 8bit = 1bytes(字节),最小的存储单位,1bytes缩写为1B 1KB = 1024B 1MB = 1024KB 1GB = 1024MB 1TB = 1

第七章、Python字符编码

第七章.Python字符编码 一.定义 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的英文.汉字等字符是二进制数转换之后的结果.通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"编码":反之,将存储在计算机中的二进制数解析显示出来,称为"解码",如同密码学中的加密和解密.在解码过程中,如果使用了错误的解码规则,则导致'a'解析成'b'或者乱码. 字符(Character):是一个信息单位,在计算机里面,一个中文汉字是一个字符,一个英

【STM32H7教程】第52章 STM32H7的LTDC应用之点阵字体和字符编码(重要)

完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第52章       STM32H7的LTDC应用之点阵字体和字符编码(重要) 本章节主要为大家讲解ASCII字符集,ASCII扩展字符集,GB2312字符集,GBK字符集和Unicode字符集.其中,字符编码这块涉及到的知识点非常多,特别是Unicode字符集的编码,涉及到的知识点极其多.大家如果有精力的话,最好可以花点时间把Unicode的发展史捋清楚了.本章节笔