保留最后N个元素

1. collections中的deque函数可以进行匹配,并返回匹配的最后N行

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)

使用deque(maxlen=N)时,会形成一个新的固定的队列,当新的元素加入并且队满时,最老的元素就会被替代。

例如:

b = deque(maxlen=3)
b.append(1)
b.append(2)
b.append(3)
print(b)  ##deque([1, 2, 3])
b.append(4)
print(b) ##deque([2, 3, 4])

deque可以用在任何一个简单队列数据结构的场合如果不设置大小,队列可以无限大

 

 
posted @ 2022-07-01 13:54  花桥  阅读(24)  评论(0)    收藏  举报