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. 自定义一个简单的web框架

    from wsgiref.simple_server import make_server def book(request):     #视图函数 return [b'<h1> book ...

  2. 编程范式(Programming Paradigm)-[ 程序员的编程世界观 ]

    编程范式(Programming Paradigm)是某种编程语言典型的编程风格或者说是编程方式.随着编程方法学和软件工程研究的深入,特别是OO思想的普及,范式(Paradigm)以及编程范式等术语渐 ...

  3. Java并发--线程安全策略

    1 不可变对象 用不可变对象保证线程安全,是相当于不让线程并发,逃避了并发. 不可变对象就是指一个类的实例化对象不可变.比如String类的实例 主要方法有: 将类声明为final 将所有成员声明为 ...

  4. Mac Technology Overview

    [Mac Technology Overview]https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual ...

  5. Pyhton学习——Day31

    # 服务端和接收端的send和reve没有任何关系,只与协议之间有关系# 应用程序产生的数据一定会交给操作系统,并由操作系统往外发送# 发送端什么时候会清空自己的内存?# 收到接收端的ACK响应以后才 ...

  6. 使用json_decode无法解析json

    在接入合作方接口时,遇到一个json无法解析出来代码如下: <?php $res='{"resultcode":007,"resMsg":"!& ...

  7. React-setState源码的理解

    首先举一个最简单的例子: this.state={ a:1 } this.setState({ a:2 }) console.log(this.state.a)//1 可以说setState()操作是 ...

  8. Golang 源码剖析:log 标准库

    Golang 源码剖析:log 标准库 原文地址:Golang 源码剖析:log 标准库 日志 输出 2018/09/28 20:03:08 EDDYCJY Blog... 构成 [日期]<空格 ...

  9. pytorch 3 activation 激活函数

    2.3 Activation Function import torch import torch.nn.functional as F from torch.autograd import Vari ...

  10. ArcGIS探索

    一.ArcGIS10概述 1.1 总览 ArcGIS是地理信息系统平台软件,主要用于创建和使用地图,编辑和管理地理数据,分析和共享地理信息,并在一系列应用中使用地图和地理信息. 功能定位: a.地图: ...