Python自带的包我分为四种:十分常用大家都知道的(比如time,math),很有用但是知名度没那么高的(比如itertools,collections),专用包(多媒体服务、XML解析)和一些根本没人会用的很难的包。第一个不需要介绍,第三个需要的时候直接找,第四个介绍它边际效应低。在这里记录第二种,一些Python有用的自带的包。这里是全部Python标准库列表。
常用的包:
>>> import string
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.hexdigits
'0123456789abcdefABCDEF'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
这个模块实现了特定目标的容器,以提供Python标准内建容器 dict
, list
, set
, 和 tuple
的替代选择。主要有用的列出这些:
原本还有一个OrderedDict类,但是python3.7以后普通字典也是有序字典,这个类就没啥用了(虽然还和普通的dict有区别)。
这些中我最有用的是Counter。原本的写法大概是:
>>> d = {}
>>> for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']: d[word] = d.get(word, 0)+1
>>> d
{'red': 2, 'blue': 3, 'green': 1}
现在更新后:
>>> from collections import *
>>> Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
Counter({'blue': 3, 'red': 2, 'green': 1})
>>> Counter('gallahad')
Counter({'a': 3, 'l': 2, 'g': 1, 'h': 1, 'd': 1})
还能够进行加减操作:
>>> a = Counter('gallahad')
>>> b = Counter('Love live!')
>>> c = a+b
>>> c
Counter({'a': 3, 'l': 3, 'v': 2, 'e': 2, 'g': 1, 'h': 1, 'd': 1, 'L': 1, 'o': 1, ' ': 1, 'i': 1, '!': 1})
>>> c.most_common(3)
[('a', 3), ('l', 3), ('v', 2)]
>>> c.most_common()[2:5]
[('v', 2), ('e', 2), ('g', 1)]
这就能让我方便地合并字典啦~~
没有说明,要用的时候再查。
一个简单的不想调用scipy或者numpy的时候可以快速使用的数学统计工具。
这些函数用于计算一个总体或样本的平均值或者典型值。
这些函数用于计算总体或样本与典型值或平均值的偏离程度。
除了从python2时代熟知functools.reduce()以外我都不懂。
★itertools --- 为高效循环而创建迭代器的函数
十分重要的工具。除了我熟知的全排列和无穷迭代器以外就,以下迭代器可供查询
迭代器 | 实参 | 结果 | 示例 |
accumulate() | p [,func] | p0, p0+p1, p0+p1+p2, ... | accumulate([1,2,3,4,5]) --> 1 3 6 10 15 |
chain() | p, q, ... | p0, p1, ... plast, q0, q1, ... | chain('ABC', 'DEF') --> A B C D E F |
chain.from_iterable() | iterable | p0, p1, ... plast, q0, q1, ... | chain.from_iterable(['ABC', 'DEF']) --> A B C D E F |
compress() | data, selectors | (d[0] if s[0]), (d[1] if s[1]), ... | compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F |
dropwhile() | pred, seq | seq[n], seq[n+1], ... 从pred首次真值测试失败开始 | dropwhile(lambda x: x<5, [1,4,6,4,1]) --> 6 4 1 |
filterfalse() | pred, seq | seq中pred(x)为假值的元素,x是seq中的元素。 | filterfalse(lambda x: x%2, range(10)) --> 0 2 4 6 8 |
groupby() | iterable[, key] | 根据key(v)值分组的迭代器 | |
islice() | seq, [start,] stop [, step] | seq[start:stop:step]中的元素 | islice('ABCDEFG', 2, None) --> C D E F G |
starmap() | func, seq | func(*seq[0]), func(*seq[1]), ... | starmap(pow, [(2,5), (3,2), (10,3)]) --> 32 9 1000 |
takewhile() | pred, seq | seq[0], seq[1], ..., 直到pred真值测试失败 | takewhile(lambda x: x<5, [1,4,6,4,1]) --> 1 4 |
tee() | it, n | it1, it2, ... itn 将一个迭代器拆分为n个迭代器 | |
zip_longest() | p, q, ... | (p[0], q[0]), (p[1], q[1]), ... | zip_longest('ABCD', 'xy', fillvalue='-') --> Ax By C- D- |
有趣的函数和不详细介绍的包
候选匹配中(不超过 n 个)的最佳匹配将以列表形式返回,按相似度得分排序,最相似的排在最前面。
>>> import difflib
>>> difflib.get_close_matches('appel', ['ape', 'apple', 'peach', 'puppy'])
['apple', 'ape']
Windows系统相关模块