常用模块8.7
Posted LeonWS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用模块8.7相关的知识,希望对你有一定的参考价值。
什么是模块?
1 使用python编写的代码(.py文件)
2 已被编译为共享库或DLL的C或C++扩展
3 包好一组模块的包
4 使用C编写并链接到python解释器的内置模块
为何要使用模块?
1.方便管理
2.重复利用
collections模块
在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。
1.namedtuple: 生成可以使用名字来访问元素内容的tuple
>>> from collections import namedtuple >>> Point = namedtuple(\'Point\', [\'x\', \'y\']) >>> p = Point(1, 2) >>> p.x 1 >>> p.y 2
2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
>>> from collections import deque >>> q = deque([\'a\', \'b\', \'c\']) >>> q.append(\'x\') >>> q.appendleft(\'y\') >>> q deque([\'y\', \'a\', \'b\', \'c\', \'x\'])
3.Counter: 计数器,主要用来计数
c = Counter(\'abcdeabcdabcaba\') print c 输出:Counter({\'a\': 5, \'b\': 4, \'c\': 3, \'d\': 2, \'e\': 1})
4.OrderedDict: 有序字典
>>> from collections import OrderedDict >>> d = dict([(\'a\', 1), (\'b\', 2), (\'c\', 3)]) >>> d # dict的Key是无序的 {\'a\': 1, \'c\': 3, \'b\': 2} >>> od = OrderedDict([(\'a\', 1), (\'b\', 2), (\'c\', 3)]) >>> od # OrderedDict的Key是有序的 OrderedDict([(\'a\', 1), (\'b\', 2), (\'c\', 3)])
注意:dict中的key是按照插入顺序排序,而不是按照key本身排序
5.defaultdict: 带有默认值的字典
有如下值集合 [
11
,
22
,
33
,
44
,
55
,
66
,
77
,
88
,
99
,
90.
..],将所有大于
66
的值保存至字典的第一个key中,将小于
66
的值保存至第二个key的值中。
即: {
\'k1\'
: 大于
66
,
\'k2\'
: 小于
66
}
from collections import defaultdict values = [11, 22, 33,44,55,66,77,88,99,90] my_dict = defaultdict(list) for value in values: if value>66: my_dict[\'k1\'].append(value) else: my_dict[\'k2\'].append(value)
使用dict
时,如果引用的Key不存在,就会抛出KeyError
。如果希望key不存在时,返回一个默认值,就可以用defaultdict
:
>>> from collections import defaultdict >>> dd = defaultdict(lambda: \'N/A\') >>> dd[\'key1\'] = \'abc\' >>> dd[\'key1\'] # key1存在 \'abc\' >>> dd[\'key2\'] # key2不存在,返回默认值 \'N/A\'
re模块
re模块和正则表达式的关系,类似于time模块跟时间的关系
正则表达式和python本身没有关系,它是处理字符串内容的一种规则。
官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
常用匹配模式:
以上是关于常用模块8.7的主要内容,如果未能解决你的问题,请参考以下文章