Python标准库参考-collections

9.3 collections

地址: http://docs.python.org/library/collections.html

9.3.1 ABC – abstract base classes

collections 模块提供了一些抽象类。可以用来检查某个类或者实例是否支持特定的功能,也可以作为 mixin 类使用。

9.3.2 deque

文档的例子比较详细了。自己敲了一遍:

>>> from collections import deque

>>> d = deque()

>>> d

deque([])

>>> d = deque(1,2,3)

Traceback (most recent call last):

  File "", line 1, in

    d = deque(1,2,3)

TypeError: deque expected at most 1 arguments, got 3

>>> d = deque([1,2,3])

>>> d

deque([1, 2, 3])

>>> d.append(4)

>>> d

deque([1, 2, 3, 4])

>>> d.appendleft(0)

>>> d

deque([0, 1, 2, 3, 4])

>>> d.pop()

4

>>> d

deque([0, 1, 2, 3])

>>> d.popleft()

0

>>> d

deque([1, 2, 3])

>>> d.extend([4,5,6,7])

>>> d

deque([1, 2, 3, 4, 5, 6, 7])

>>> d.rotate(1)

>>> d

deque([7, 1, 2, 3, 4, 5, 6])

>>> d.rotate(-1)

>>> d

deque([1, 2, 3, 4, 5, 6, 7])

>>> d.rotate(5)

>>> d

deque([3, 4, 5, 6, 7, 1, 2])

>>> d.rotate(2)

>>> d

deque([1, 2, 3, 4, 5, 6, 7])

>>> 

 

文档里还有一部分是 deque 的应用实例,例如读取一个文件最后几行的 tail 函数、 moving_average

 

9.3.3 defaultdict

dict 的子类。多了一个 __missing__(key) 函数和 default_factory 属性,其实就是提供了一种默认行为。例如:

字典:

>>> d = {}

>>> d['snow']

Traceback (most recent call last):

  File "", line 1, in

    d['snow']

KeyError: 'snow'

 

默认字典:

>>> from collections import defaultdict

>>> d = defaultdict(int)

>>> d['snow']

0

 

文档里有应用实例,用来计数。用 if 同样可以实现计数,但是性能要差。

9.3.4 namedtuple()

除了支持所有的元组操作之外,可以使用名称而不是位置来访问元素。文档里有一个 Point 的例子。

2009 6 7 15:04:17

 

你可能感兴趣的:(标准库,pyryday)