详细分析Python collections工具库
collections是Python内置模块之一,它提供了许多有用的数据类型,以及一组针对这些数据类型的接口。本文将介绍collections模块中的几个常用数据类型,并提供一些示例说明。
Counter
Counter是一个简单的计数器,用于统计元素出现的次数。它可以接受任何序列类型作为输入,并将元素存储为字典的键,将元素出现的次数存储为字典的值。
下面是一个使用Counter计算字符出现次数的示例:
from collections import Counter
c = Counter('Hello, world!')
print(c)
输出结果为:
Counter({'l': 3, 'o': 2, 'H': 1, 'e': 1, ',': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1, '!': 1})
该示例中,Counter统计了字符串中每个字符出现的次数,并将其存储为字典形式的计数器。
OrderedDict
OrderedDict是一个有序字典,它保留元素添加的顺序。对于需要按照元素添加的顺序进行操作的场景,这个数据类型非常有用。
以下是一个使用OrderedDict按照键的顺序遍历字典的示例:
from collections import OrderedDict
d = OrderedDict()
d['apple'] = 1
d['banana'] = 2
d['orange'] = 3
for key in d:
print(key, d[key])
输出结果为:
apple 1
banana 2
orange 3
在上述示例中,OrderedDict保留了元素添加的顺序,并返回按照键的顺序遍历的结果。
namedtuple
namedtuple是一个工厂函数,用于创建具有命名字段的元组。namedtuple在某些情况下,可以代替类定义,其具有更高的效率和更低的内存占用率。
以下是一个使用namedtuple创建点的示例:
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x, p.y)
输出结果为:
1 2
在上述示例中,我们可以通过Point.x和Point.y访问点的坐标,而不需要定义一个单独的类或使用下标运算符。
deque
deque是双向队列,它支持在队列两端高效地插入和删除元素。
以下是一个使用deque实现循环队列的示例:
from collections import deque
q = deque(maxlen=10)
for i in range(20):
q.append(i)
print(q)
输出结果为:
deque([0], maxlen=10)
deque([0, 1], maxlen=10)
deque([0, 1, 2], maxlen=10)
deque([0, 1, 2, 3], maxlen=10)
deque([0, 1, 2, 3, 4], maxlen=10)
deque([0, 1, 2, 3, 4, 5], maxlen=10)
deque([0, 1, 2, 3, 4, 5, 6], maxlen=10)
deque([0, 1, 2, 3, 4, 5, 6, 7], maxlen=10)
deque([0, 1, 2, 3, 4, 5, 6, 7, 8], maxlen=10)
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)
deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], maxlen=10)
deque([2, 3, 4, 5, 6, 7, 8, 9, 10, 11], maxlen=10)
deque([3, 4, 5, 6, 7, 8, 9, 10, 11, 12], maxlen=10)
deque([4, 5, 6, 7, 8, 9, 10, 11, 12, 13], maxlen=10)
deque([5, 6, 7, 8, 9, 10, 11, 12, 13, 14], maxlen=10)
deque([6, 7, 8, 9, 10, 11, 12, 13, 14, 15], maxlen=10)
deque([7, 8, 9, 10, 11, 12, 13, 14, 15, 16], maxlen=10)
deque([8, 9, 10, 11, 12, 13, 14, 15, 16, 17], maxlen=10)
deque([9, 10, 11, 12, 13, 14, 15, 16, 17, 18], maxlen=10)
deque([10, 11, 12, 13, 14, 15, 16, 17, 18, 19], maxlen=10)
在上述示例中,我们使用deque实现循环队列,并通过maxlen参数限制了队列的长度,从而保持队列大小不超过10。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详细分析Python collections工具库 - Python技术站