在迭代或者其他形式的处理过程中对最后几项记录做一个有限的历史记录统计
from collections import deque
def search(lines, pattern, history):
previous_lines = deque(maxlen=history)
for line in lines:
if pattern in line:
yield line,previous_lines
previous_lines.append(line)
if __name__ == '__main__':
with open('somefile.txt') as f:
for line,prevlines in search(f,'zk',5):
for pline in prevlines:
print(pline,end='')
print(line,end='')
print('-'*20)
不指定队列长度可以得到无界限的,append在末尾添加,appendleft在头部添加
pop弹出末尾,popleft弹出头部,这些操作复杂度都是O(1),牛逼,不像列表那种链表,操作头部复杂度O(N)