码迷,mamicode.com
首页 > 其他好文 > 详细

双端队列deque的应用

时间:2019-07-27 00:05:38      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:example   元素   list   search   增加   lin   结构   移动   ons   

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的应用

标签:example   元素   list   search   增加   lin   结构   移动   ons   

原文地址:https://www.cnblogs.com/jeffrey-yang/p/11253482.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!