路飞学城Python-Day5

48.字典的类型的详细方法
字典的增加值
dic["k1"] = "v1"
字典的修改
dic["k2"] = "v2"
判断是否在字典里
if str in dic
拿取字典的数据
get() 如果有就返回,如果没有就是返回None
拿取字典的数据一般就用get,不容易报错
字典的删除
dic.pop()>>删除值,同时返回删除的值
dic.clear()>>清空
dic.popitem()>>随机删除,不是按顺序删除的
del dic["str"]>>del删除方法
多级字典就是字典里面套字典
多级字典的嵌套是可以的,找到一级之后就再往下找,程序中多数都是多级字典的嵌套
dic.keys()>>打印所有的字典的key
dic.items()>>就是把字典中的每一个key和vaue合成一个小元祖,把字典转为一个列表
dic.update()>>更新,把两个字典合并成一个,如果有重复的key的value就会覆盖值
dic.setdefault()>>如果有值就获取,如果没有key就会按默认方式去设置并且新增value
dic.fromkeys()>>函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值
字典的循环
for key in dic:
print(key,dic[key])
for k,v in dic.items(): #这样的操作是低效的,items需要转换为列表
peint(k,v)

49.数据类型-集合
如果两个列表之间是有交叉的,如何确定交集?
当然是使用集合咯(使用循环比较麻烦)
集合是一个无序的,不重复的数据组合,它的主要作用是
1.去重,把一个列表完成集合,就自动去重
2.关系测试,测试两组数据之前的交集、差集、并集等关系

 

50.集合的关系型测试
交集 s1.intersection(s2) 或者 s1 & s2
差集 s1.difference(s2) 或者 s1-s2
并集 s1.union(s2) 或者 s1|s2
对称差集 s1.symmetric_difference(s2)
两个集合之间的包含关系
s1.issubset(s2)
s1.issupperset(s2)
判断两个集合是不是不相交
s1.isdisjoint(s2)
s1.difference_update(s2)把差集的结果赋值给s1

51.16制运算
进制回忆
二进制 01
八进制 01234567
十进制 0123456789
十六进制 0123456789ABCDEF
十进制转换8、16进制
oct()>>八进制
hex()>>十六进制

52.为何使用十六进制
八进制在古老的语言上可能还在使用,十六进制的都用在哪里?
网络通讯一般都是用十六进制的
如果数据量大,用二进制不方便阅读,用十六进制的处理数据短
1.计算机硬件是0101二进制的,16进制刚好是2的倍数,更容易表达一个命令或者数据,十六进制
更简短,因为换算的时候16进制数可以顶4位2进制数,也就是一个字节(8位进制可以用两个16进制表示)
2.最早规定ASCII字符集采用的是8bit后期扩展了,但是基础单位还是8bit,8bit用2个16进制直接就能表达出来
不管阅读还是存储都比较方便
3.计算机中CPU运算也是遵照ASCII字符集,以16、32、64这样的方式在发展,因此数据交换的时候16进制也显得更好
4.为了统一规范,CPU、内存、硬盘我们看到的都是16进制的运算
16进制用在哪里?
1.网络编程,数据交换的时候需要对子街进行解析,都是一个byte一个byte的处理,1个byte可以用0xFF两个16进制来表达
通过网络抓包,可以看到数据是通过16进制传输的
2.数据存储,存储到硬件中的方式是0101,存储到系统中的方式都是byte方式
3.一些常用的值的定义,比如我们经常用到的html中的color,就是用的16进制,4个16进制可以表达好几百万的颜色信息

53.十六进制和二进制的转换
十六进制本质还是二进制,一个byte可以是两个十六进制数
每四个二进制就可以换算成对用的十六进制的数
在真正的计算机里,如何表示十六进制,只要看到前缀是0X的,就是十六进制
在向左或者向右取位数的时候,如果不够就补足0

54.字符编码回顾
一旦你走上了编程之路,就需要了解字符编码的互相转换及其原理
如果是做python,一定要把字符编码弄清楚
转载https://www.cnblogs.com/alex3714/articles/7550940.html
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编码 设计 的一种 在存储 和传输时节省空间的编码方案。

55.字符是怎么存到硬盘上的
无论以什么编码显示字符,都是2进制的形式存储在硬盘上
从硬盘上读取还是需要再将2进制再读取的,存硬盘上是什么编码,取出来就必须是什么编码的

56.字符编码的转换
目前为止国际语言还是英文,字符编码虽然有万国编码,但是Unicode也一样,虽然是通用语言,还是使用率不高
用Unicode编码先封装后,再用utf-8解
程序可以加个补丁,自动去转换

57.Python3代码执行流程
Python3默认就是支持中文,默认文件编码就是utf-8,Python3里的编码(字符串)全是Unicode
执行过程
1.解释器找到代码文件,把代码字符串按为文件头定义的编码加载到内存,转换成Unicode
2.把代码字符串按照语法规则进行解释
3.所有的变量字符串都会以Unicode的编码来执行
Pycharm会自动检测文件头是否按照编码形式

58.Python3编码转换语法
Python支持Unicode,并不是所有语言的在内存中的默认编码都是Unicode,python2里使用的就是ASCII,如果想要用的话就必须声明Utf-8
即使这样,也不会加载到内存后,并不会主动帮你转换,也就是说你的变量字符串还是utf-8,也就是说不支持utf-8的终端就是乱码了
windows上不会乱的两种方式
1.字符串是以GBK格式显示的
2.字符串是Unicode编码
既然python2并不会自动的把文件编码转为unicode存在内存里,那就只能自己转换了

59.python3查看编码映射表
utf-8占3个字节
Unicode占2个字节
gbk占2个字节
字节的长度来推测字符编码的格式
GBK是兼容ASCII码的,如果想兼容两个码,是会出现问题的
GBK就是利用了ASCII第128-255位很少使用的原理,在第一位上添加自己的位数

60.Python bytes类型介绍
2个16进制位就是1个字节
为了让人们方便区分二进制,所以以一个字节为一组来展示出来
一段二进制数据串根据编码表的关系找到的字符才是字符串
二进制串就是bytes,二进制就像是身份证,字符串就是人的姓名,本质上就是一致的,所以python自己就做了转换
python里自己就有两种类型,一种是字符,一种就是二进制
图片是没有字符编码的,都是文件类型,如果要读到内存中,应该怎么表示图片的二进制的数据流

 

61.Python3与2字符串的区别
图片文件打开其实也就是16进制的文件
为什么会出现乱码?
print会尝试去找utf-8的对应关系,每3个字节去匹配中文了
对于纯字符串来说,字符串就是二进制(bytes)
python2里,str就是bytes,有bytes类型是因为要表示图片、视频等二进制格式的数据
python2里,以utf-8里编码的文件,在windows里显示的就是乱码了,因为windows上支持的是GBK编码
如何在python2下,实现编写一个软件,全球各个电脑上都能直接看?
使用Unicode编码来写软件
s = str.decode(“utf-8”) | s = u“something”
Unicode是为了支持全球性的编码文件
在python2里,以utf-8 or gbk 编码的代码,加载到内存,并不会转成unicode,编码依然是utf-8 or gbk
在python3里,以utf-8 or gbk 编码的代码,加载到内存,会被自动转成unicode
用python3写的软件就默认支持了unicode

转载于:https://www.cnblogs.com/pandaboy1123/p/9257727.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值