ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

双端队列deque的应用

2019-07-26 23:53:25  阅读:209  来源: 互联网

标签:__ deque 队列 双端 lines maxlen line


collections模块作为基础数据类型的一种扩展,提供了更为丰富的数据结构支持。和list相比,双端队列deque在数组的首部和尾部进行增加和删除元素的时间复杂度都为O(1)。而list在数组尾部进行操作的时间复杂度为O(1),在首部进行增加删除数据的时间复杂度为O(n)(涉及到整个数组元素的移动)。
Deques支持线程安全,内存有效的在队列两端进行删除增加元素操作,在任一方向上具有大致相同的O(1)性能。
类原型:collections.deque([iterable[, maxlen]]),若maxlen未设定或为None,则deque实例的长度可以扩展到任意长度。若指定了具体长度,当新元素从一端加入,且超出maxlen时,另一段的元素会弹出,以确保maxlen的固定值。
deque常用于保持固定长度的操作队列,如下所示:

from collections import deque

def search(lines, pattern, history=5):
    previous_lines = deque(maxlen=history)
    for line in lines:
        if pattern in line:
            yield line, previous_lines
        previous_lines.append(line)

# Example use on a file
if __name__ == '__main__':
    with open('somefile.txt') as f:
        for line, prevlines in search(f, 'python', 5):
            for pline in prevlines:
                print(pline, end='')
            print(line, end='')
            print('-'*20)

标签:__,deque,队列,双端,lines,maxlen,line
来源: https://www.cnblogs.com/jeffrey-yang/p/11253482.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有