collections 模块

Python标准库系列文章目录

python内建模块
collections 模块:deque双向队列
queue module:队列、优先级队列
sortedcontainers:有序列表、有序字典和有序集合
python time module
python string module



前言

只介绍collections模块的deque类


一、deque双向队列

Methods

方法:和list的方法一样
注意:deque不支持切片操作,支持del q[n]

方法
append( value )添加到右端
appendleft( value )添加到左端
pop( value )移除并返回最右侧的元素
popleft( value )移除并返回最左侧的元素
rotate( [n=1] )向右循环n个元素,若n为负数则向左循环
clear()移除所有元素,使其长度为0
copy()创建一份浅拷贝
count( x )计算元素等于x的个数

Example

# 当长度超过maxlen时,多余的会被挤掉
dq = collections.deque([iterable[, maxlen]]) # 限定长度的deque队列
#限长deque提供了类似Unix tail 过滤功能
def tail(filename, n=10):
    'Return the last n lines of a file'
    with open(filename) as f:
        return deque(f, n)
"""
一个 轮询调度器 可以通过在 deque 中放入迭代器来实现。
值从当前迭代器的位置0被取出并暂存(yield)。 
如果这个迭代器消耗完毕,就用 popleft() 将其从对列中移去;
否则,就通过 rotate() 将它移到队列的末尾
"""   
def roundrobin(*iterables):
    "roundrobin('ABC', 'D', 'EF') --> A D E B F C"
    iterators = deque(map(iter, iterables))
    while iterators:
        try:
            while True:
                yield next(iterators[0])
                iterators.rotate(-1)
        except StopIteration:
            # Remove an exhausted iterator.
            iterators.popleft()

总结

队列用collections.deque 实现比用queue.Queue快
优先级队列

  • list.sort(reverse=xx, key=function_name)
  • sortedcontainers.SortedList()
  • queue.PriorityQueue()

参考链接:

https://docs.python.org/zh-cn/3/library/collections.html#collections.deque

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值