本文共 2756 字,大约阅读时间需要 9 分钟。
数据类型 | 英文 |
---|---|
数值 | number |
空值 | none |
布尔值 | bool |
字符串 | string |
列表 | list |
元组 | tuple |
集合 | set |
字典 | dictionary |
数据结构/算法 | 语言内置 | 内置库 |
---|---|---|
线性结构 | list/tuple | array(数组,不常用) 、collections.namedtuple |
链式结构 | collections.deque(双端队列) | |
字典结构 | dict | collections.Counter(计数器)、OrderedDict(有序字典) |
集合结构 | set/frozen set | |
排序算法 | sorted | collections.deque(双端队列) |
二分算法 | bisect模块 | |
堆算法 | heapq模块 | |
缓存算法 | functools.Iru_cache(Least Recent Used,Python3) |
可以先看一下一些方法的英文文档:
方法 | 英文文档 |
---|---|
namedtuple() | factory function for creating tuple subclasses with named fiields |
deque | list-like container with fast appends and pips on either end |
Counter | dict subclass for counting hashable objects |
OrderDict | dict subclass that remembers the order entries were added |
defaultDict | dict subclass that calls a factory function to supply missing values |
namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。
这样一来,我们用namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。
代码演示:>>> from collections import namedtuple>>> Point = namedtuple('Point', ['x', 'y'])>>> p = Point(1, 2)>>> p.x1>>> p.y2>>> p[0]1>>> p[1]2
deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈。
代码演示:
In [1]: import collectionsIn [2]: de = collections.deque()In [3]: de.append(1)In [4]: de.appendleft(0)In [5]: deOut[5]: deque([0, 1])In [6]: de.pop()Out[6]: 1In [7]: de.popleft()Out[7]: 0In [8]: deOut[8]: deque([])
Counter是一个简单的计数器
代码演示:
In [9]: c = collections.Counter()In [10]: cOut[10]: Counter()In [11]: c = collections.Counter('asdfdafsasfd')In [12]: cOut[12]: Counter({ 'a': 3, 's': 3, 'd': 3, 'f': 3})In [13]: c['a']Out[13]: 3In [14]: c.most_common()Out[14]: [('a', 3), ('s', 3), ('d', 3), ('f', 3)]
使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。如果要保持Key的顺序,可以用OrderedDict
代码演示:
In [16]: od = collections.OrderedDict()In [17]: od['c'] = 'c'In [18]: od['a'] = 'a'In [19]: od['b'] = 'b'In [20]: odOut[20]: OrderedDict([('c', 'c'), ('a', 'a'), ('b', 'b')])In [21]: list(od.keys())Out[21]: ['c', 'a', 'b']
使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict
代码演示:
In [24]: dd = collections.defaultdict(int)In [25]: dd['a']Out[25]: 0In [26]: dd['d'] += 1In [27]: ddOut[27]: defaultdict(int, { 'a': 0, 'd': 1})
好啦,掌握这几个函数,就可以算是对 collections 库有基本的了解啦,我最近会把 Python 算法和数据结构这个专栏写完,请大家拭目以待吧~
嘿嘿,I am very glateful that 你看到这里了哦~下回再见ヾ(o◕∀◕)ノヾ
Thx转载地址:http://unggn.baihongyu.com/