Python學習筆記:儲存最後N個元素
儲存yo有限的歷史記錄是collection.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) if _name_ == '_mainn_: with open('somefile.txt ')' as f: for line,prevlines in search(f, 'python', 5): for pline in prevlines: print(pline, end='') print('*'*20)
deque(maxlen=N)建立一個固定長度的佇列。當新紀錄加入而佇列已滿時會自動移除最老的那條紀錄。例如:
>>>q = deque(maxlen=3)
>>>q.append(1)
>>>q.append(2)
>>>q.append(3)
>>>q
deque([1, 2, 3], maxlen=3)
>>>q.append(4)
>>>q
deque([2, 3, 4], maxlen=3)