常用模块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的主要内容,如果未能解决你的问题,请参考以下文章

nodejs常用代码片段

Python 常用模块学习

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

C#常用代码片段备忘

swift常用代码片段

# Java 常用代码片段