python第二章字符编码

2018-06-22  本文已影响5人  牛奶加醋

第二章


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

二进制与十进制转换

img

ASCII表

img

文字转2进制

计算机容量单位

img

字符编码

列表

浅copy

深copy

import copy
L3 = copy.deepcopy(L2)

完全copy,所有的内部元素独立复制一份,不经常用,除非特殊场景,否则尽量不要用深copy.

字符串

字符串的方法

常用的字符串方法

必须熟练掌握

元祖

hash 散列

字典

字典操作

多级字典嵌套

img

其他方法

和list比较,dict有以下几个特点:

  1. 查找和插入的速度极快,不会随着key的增加而变慢;
  2. 需要占用大量的内存,内存浪费多。

而list相反:

  1. 查找和插入的时间随着元素的增加而增加;
  2. 占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法。

​ dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象

​ 这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。

​ 要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key

循环

for k in info:  # 取info所有的key
for k in info:      # 常用的取key和value的方法
    print(k,info[k])
for k,v in info.items() # 低效的循环方法,请忘记
    print(k,v)

作业

集合


定义:有一个或多个确定的元素所构成的整体叫做集合.
特征:
1. 确定性(元素必须可hsah)
2. 互异性(去重)
3. 无序性(集合中的元素没有先后之分)

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

集合的创建:

集合的关系运算

字符编码


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

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

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

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

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

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

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

Python3的执行过程

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

image

最后再提示一下,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:带有默认值的字典
上一篇 下一篇

猜你喜欢

热点阅读