day_08

上节课回顾

元组内置方法

不可更改的列表,其他的和列表一模一样

散列表

参考

字典内置方法

  1. 乱序--》pyton2中字典是乱序的,但是pyton3做了优化

使用方法:

[key]可以取值,也可以修改至

get可以获取值,没有获取到值那就默认返回None

setdefault 按key获取值,如果没有这个key就增加,有就不做修改

集合内置方法

  1. 去重--》同样的值存的位置是一样的,拿到第一个就不会拿第二个
  2. 乱序--》插值是按照某种哈希算法随机插的
  3. 进行数学集合运算
    1. 交集
    2. 并集
    3. 补集
    4. 差集

add添加

remove删除

discard删除

深浅拷贝

拷贝

l2为l1的拷贝对象时,l1内部所有数据类型变化,l2就变化

浅拷贝

l2为l1的浅拷贝对象时,l1内部的可变数据变化,l2就变化;l1内部的不可变数据变化,l2不变

深拷贝

l2为l1的深拷贝对象时,l1内部的任何数据变化,l2也不变

今日所学

字符编码

文本编辑器存储信息的过程

文本编辑器 --》 写文本 --》 存储信息

显示屏(内存) --》(转换)硬盘

#ASCII码的转换关系
print(chr(65))
print(ord('a'))

早期,每个国家都有自己国家的字符编码,每个国家也只能使用自己国家的计算机。

这个时候就出现了unicode编码

Unicode编码可以识别所有国家的编码

Unicode存储占用太多空间,所有出现了utf-8(和Unicode一一对应)--》解决了Unicode内存占用的问题

一般现在的电脑都是内存中unicode取,存用utf8存。

为什么内存中不用utf8?

因为utf8和gb2312都没有转换关系,所有内存要用Unicode

gb2312和gbk的区别

gb2312 ——》 常用词

gbk——》所有字

用什么编码写,就用什么编码读,否则会出现乱码

编码和解码

unicode编码 ---》(编码) utf8 从内存到硬盘

utf8 --》(解码) unicode 从硬盘到内存

现在内存只有unicode编码

python解释器(文本编辑器)解释python代码的流程

1、python解释器相当于文本编辑器,先把代码读入python解释器--》字符编码》上coding头

2、识别代码-》print有意义--》语法问题

3、产生结果--》跑到终端--》字符编码

终端有一个特性:电脑是什么编码,就会按照什么编码来,Windows终端是gbk

python2和python3的编码区别

python2

python2有两种存储变量的形式,第一种:Unicode,第二种:按照coding头来的

python2默认用ASCII读取字符

假设python2用utf8存储x='中文',当你print(x)的时候,终端接收gbk的变量x,但是windows终端编码是utf8,会乱码

假设python2用unicode存储,终端接受的是unicode,windows终端编码是utf8还是gbk重要吗?不会乱码=

# coding:gbk
lt1 = '中文'  # utf存储的
# lt1 = ['中文']  # []让他不用终端的编码转化,显示01010101001
print lt1  # ['\xe4\xb8\xad\xe6\x96\x87']

lt2 = u'中文'  # u'中文'让他变成unicode  # 早期用python2定义中文,必须得加上u,让他变成unicode存储
# lt2 = [u'中文']
print lt2  # '中文'

python3

python3只有一种存储变量的形式,Unicode

python3用Unicode存储,不管终端编码是什么,都不会乱码

上一篇:解决Python print输出不换行没空格的问题


下一篇:Win10下python3和python2同时安装并解决pip共存问题