自学Python6.5-内置模块(re、collections )
自学Python之路-Python基础+模块+面向对象
自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django
自学Python6.5-内置模块(re、collections、)
13. re模块
正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序员们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。
14. collections 模块
在内置数据类型(dict、list、set、touple)基础上,collections模块还提供了几个人外的数据类型:
- 计数器(Counter),主要用来计数
- 双向队列(deque),双端队列,可以快速的从另外一侧追加和推出对象
- 默认字典(defaultdict),带默认值的字典
- 有序字典(OrderedDict)
- 可命名元组(namedtuple) ,生成可以使用名字来访问元素内容的tuple
14.1 计数器(Counter)
Counter作为字典dicit()的一个子类用来进行hashtable计数,将元素进行数量统计,计数后返回一个字典,键值为元素,值为元素个数
| most_common(int) | 按照元素出现的次数进行从高到低的排序,返回前int个元素的字典 |
| elements | 返回经过计算器Counter后的元素,返回的是一个迭代器 |
| update | 和set集合的update一样,对集合进行并集更新 |
| substract | 和update类似,只是update是做加法,substract做减法,从另一个集合中减去本集合的元素 |
| iteritems | 返回由Counter生成的字典的所有item |
| iterkeys | 返回由Counter生成的字典的所有key |
| itervalues | 返回由Counter生成的字典的所有value |
from collections import Counter str = "abcbcaccbbad"
li = ["a","b","c","a","b","b"]
d = {"1":3, "3":2, "17":2} #1. Counter获取各元素的个数,返回字典
print ("Counter(s):", Counter(str))
print ("Counter(li):", Counter(li))
print ("Counter(d):", Counter(d)) #2. most_common(int)按照元素出现的次数进行从高到低的排序,返回前int个元素的字典
d1 = Counter(str)
print ("d1.most_common(2):",d1.most_common(2)) #3. elements返回经过计算器Counter后的元素,返回的是一个迭代器
print ("sorted(d1.elements()):", sorted(d1.elements()))
print ('''("".join(d1.elements())):''',"".join(d1.elements())) #4. 若是字典的话返回value个key
d2 = Counter(d)
print("若是字典的话返回value个key:", sorted(d2.elements()))

14.2 双向队列(deque)
使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储(有顺序的),数据量大的时候,插入和删除效率很低。
duque就是为了高效实现插入和删除操作的双向列表,适用于队列和栈。
- 堆栈:先进后出
- 队列queue:先进先出
#队列
import queue
q = queue.Queue()
q.put([1,2,3])
q.put(5)
q.put(6)
print(q) #
print(q.get())
print(q.get())
print(q.get())
print(q.get()) # 取完3个数之后,阻塞
print(q.qsize()) # 取q的数值


# 队列
from collections import deque
dq = deque([1,2])
dq.append('a') # 从后面放数据 [1,2,'a']
dq.appendleft('b') # 从前面放数据 ['b',1,2,'a']
dq.insert(2,3) #['b',1,3,2,'a']
print(dq.pop()) # 从后面取数据 a
print(dq.pop()) # 从后面取数据 2
print(dq.popleft()) # 从前面取数据 b
print(dq)
| append | 队列右边添加元素 |
| appendleft | 队列左边添加元素 |
| clear | 清空队列中的所有元素 |
| count | 返回队列中包含value的个数 |
| extend | 队列右边扩展,可以是列表、元组或字典,如果是字典则将字典的key加入到deque |
| extendleft | 同extend,在左边扩展 |
| pop | 移除并返回队列右边的元素 |
| popleft | 移除并返回队列左边的元素 |
| remove(value) | 移除队列第一个出现的元素 |
| reverse | 队列的所有元素进行反转 |
| rotate(n) | 对队列数进行移动 |

14.3 默认字典(defaultdict)
默认字典,字典的一个子类,继承所有字典的方法,默认字典在进行定义初始化的时候得指定字典值有默认类型。
from collections import defaultdict
d = defaultdict(lambda : 5)
print(d['k'])

14.4 有序字典(OrderedDict)
使用dict时,key是无序的,在对dict做迭代的时候,我们无法确定key的顺序。
如果要保持key的顺序,就可以采用orderedDict。
from collections import OrderedDict
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(od) # OrderedDict的Key是有序的
print(od['a'])
for k in od:
print(k)

14.5 可命名元组(namedtuple)
我们知道tuple是不可变集合,例如,一个点的二维坐标可以表示成p=(1,2),但是这样很难看出是一个点的坐标,所有这时可采用namedtuple。
from collections import namedtuple
Point = namedtuple('point',['x','y','z'])
p1 = Point(1,2,3)
p2 = Point(3,2,1)
print(p1.x)
print(p1.y)
print(p1,p2)

#花色和数字
from collections import namedtuple
Card = namedtuple('card',['suits','number'])
c1 = Card('红桃',2)
print(c1)
print(c1.number)
print(c1.suits)

15. 模块
自学Python6.5-内置模块(re、collections )的更多相关文章
- 自学Python6.1-模块简介
自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...
- 自学Python6.3-内置模块(1)
自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...
- 自学Python6.2-类、模块、包
自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...
- 自学Python6.4-内置模块(2)
自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...
- python内置模块之collections(六)
前言 collections是Python内建的一个集合模块,提供了许多有用的集合类. 系列文章 python模块分析之random(一) python模块分析之hashlib加密(二) python ...
- day36-常见内置模块五(collections、xml模块)
一.collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:namedtuple.deque.Counter ...
- python学习笔记:第21天 常用内置模块之collections和time
目录 一.collections模块 二.时间模块 也可以在我的个人博客上阅读 一.collections模块 1. Counter Counter是⼀个计数器,主要⽤统计字符的数量,之前如果我们要统 ...
- 自学Python5.3-内置模块(1)
内置模块(1)内置模块是Python自带的功能,在使用内置模块相应的功能时,需要 先导入 再 使用 1.OS模块 用于提供系统级别的操作: os.getcwd() 获取当前工作目录,即 ...
- 自学Python5.1-模块简介
模块简介 在C语言中如果要引用sqrt这个函数,必须用语句"#include<math.h>"引入math.h这个头文件,否则是无法正常进行调用的.那么在Python中 ...
随机推荐
- Linux crontab 每5秒钟执行一次 shell 脚本 的方法
Linux crontab 每5秒钟执行一次 shell 脚本 的方法 由于 Linux 的 crontab 的定时命令格式如下: minute hour day-of-month month-of- ...
- MySQL使用order by field()自定义排序
MySQL的自定义排序和Oracle相比,要简单得多. 假设在表v_education的列schoolRecord中,有以下字段:'小学','初中','高中','专科','本科','硕士','博士'. ...
- VMWare虚拟机->锁定文件失败,打不开磁盘的解决办法
VMWare虚拟机提示:锁定文件失败,打不开磁盘的解决办法 如果使用VMWare虚拟机的时候突然系统崩溃蓝屏,有一定几率会导致无法启动,会提示:“锁定文件失败,打不开磁盘...或它所依赖的某个快照 ...
- linux之文件操作和权限
文件查看 cat显示文本 cat [option] ... [file] ... cat -E a.txt # 显示$符号 cat -n a.txt # 对显示的每一行加行号 cat -b a.txt ...
- docker上传私有仓库报错
docker 1.17 版本搭建私有仓库,上传镜像报错:server gave HTTP response to HTTPS client” 系统环境:centos7docker版本:1.17(注意版 ...
- addEventListener事件委托
什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事 ...
- netcore程序部署 ubuntu 16.0.4 报错 The type initializer for 'System.Net.Http.CurlHandler'的解决方案
最近业务扩展需要把netcore程序部署到ubuntu 16.0.4上,因为代码里面用到了HttpClient 请求. 部署ubuntu后一直报错 参考地址:https://github.com/do ...
- Nginx的root和alias区别
1.root 下面举例说明: location /i/ { root /data/w3; } 请求 http://foofish.net/i/top.gif 这个地址时,那么在服务器里面对应的真正的资 ...
- Flume概述
flume是分布式的,可靠的,用于从不同的来源有效收集 聚集 和 移动 大量的日志数据用以集中式的数据存储的系统. 是apache的一个顶级项目. 系统需求:jdk1.6以上,推荐java1.7
- sql server不同排序规则的数据库间字段的比较
不同的排序规则的字段是不能直接比较的.会提示:无法解决 equal to 操作的排序规则冲突.可以把字段强制转换一个排序规则,这样就能比较了.示例: ------------------------- ...