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

路飞学城Python-Day5的更多相关文章

  1. 路飞学城—Python爬虫实战密训班 第三章

    路飞学城—Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫: - 定义调度器 - ...

  2. 路飞学城—Python爬虫实战密训班 第二章

    路飞学城—Python爬虫实战密训班 第二章 一.Selenium基础 Selenium是一个第三方模块,可以完全模拟用户在浏览器上操作(相当于在浏览器上点点点). 1.安装 - pip instal ...

  3. 路飞学城Python爬虫课第一章笔记

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 之前看阮一峰的博客文章,介绍到路飞学城爬虫课程限免,看了眼内容还不错,就兴冲冲报了名,99块钱满足以下条件会返还并送书送视频. 缴 ...

  4. 路飞学城-Python开发集训-第3章

    学习心得: 通过这一章的作业,使我对正则表达式的使用直接提升了一个level,虽然作业完成的不怎么样,重复代码有点多,但是收获还是非常大的,有点找到写代码的感觉了,遗憾的是,这次作业交过,这次集训就结 ...

  5. 路飞学城-Python开发集训-第1章

    学习体会: 在参加这次集训之前我自己学过一段时间的Python,看过老男孩的免费视频,自我感觉还行,老师写的代码基本上都能看懂,但是实际呢?....今天是集训第一次交作业的时间,突然发现看似简单升级需 ...

  6. 路飞学城-Python开发集训-第4章

    学习心得: 学习笔记: 在python中一个py文件就是一个模块 模块好处: 1.提高可维护性 2.可重用 3.避免函数名和变量名冲突 模块分为三种: 1.内置标准模块(标准库),查看所有自带和第三方 ...

  7. 路飞学城-Python开发集训-第2章

    学习心得: 这章对编码的讲解超级赞,现在对于编码终于有一点认知了,但还没有大彻大悟,还需要更加细心的琢磨一下Alex博客和视频,以前真的是被编码折磨死了,因为编码的问题而浪费的时间很多很多,现在终于感 ...

  8. 路飞学城-Python开发-第二章

    ''' 数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家' ...

  9. 路飞学城-Python开发-第三章

    # 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...

  10. 路飞学城-Python开发-第一章

    # 基础需求: # 让用户输入用户名密码 # 认证成功后显示欢迎信息 # 输错三次后退出程序 username = 'pandaboy' password = ' def Login(username ...

随机推荐

  1. HTMLWEST网页特效大全

    网页特效大全网:www.htmlwest.com 收藏一下,很不错的站.

  2. hdu 1532 Drainage Ditches 【ISAP 】

    还是不是很懂算法 先存一个模板先吧--- 看的这篇学的-- http://www.renfei.org/blog/isap.html #include<cstdio> #include&l ...

  3. POJ 1458 Common Subsequence 【最长公共子序列】

    解题思路:先注意到序列和串的区别,序列不需要连续,而串是需要连续的,先由样例abcfbc         abfcab画一个表格分析,用dp[i][j]储存当比较到s1[i],s2[j]时最长公共子序 ...

  4. (3)pyspark----dataframe观察

    1.读取: sparkDF = spark.read.csv(path) sparkDF = spark.read.text(path) 2.打印: sparkDF.show()[这是pandas中没 ...

  5. django-1-框架介绍

    <<<python虚拟环境>>> 用django框架做web开发必须要用到python虚拟环境,而且一个虚拟环境只能创建一个django项目,如果创建多个djang ...

  6. java的反射机制(重要)

    1,反射的概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为 ...

  7. java判断string数组中是否包含某个元素

  8. [React] Understanding setState in componentDidMount to Measure Elements Without Transient UI State

    In this lesson we'll explore using setState to synchronously update in componentDidMount. This allow ...

  9. Azure RBAC(Roles Based Access Control)正式上线了

    期盼已久的Azure RBAC(Roles Based Access Control)正式上线了. 在非常多情况下.客户须要对各种类型的用户加以区分,以便做出适当的授权决定.基于角色的訪问控制 (RB ...

  10. 一个软件实现的Linux看门狗—soft_wdt

    soft_wdt(下面简称本软件)是一个软件实现的Linux看门狗. 本软件是一款开源.免费软件. 下载地址: https://github.com/sunmingbao/soft-wdt/archi ...