在迭代或者其他形式的處理過程中對最後幾項記錄做一個有限的歷史記錄統計
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)