问题
在迭代操作或者其他操作的时候,怎样只保留最后有限几个元素的历史记录?
from collections import deque
def search(lines,parttern,history=5):
prvious_lines=deque(maxlen=history)
for li in lines:
if parttern in li:
yield li,prvious_lines
prvious_lines.append(li)
if __name__=="__main__":
with open(r"D:\pqj\workspace\python学习\python_cook3\第一章"
r": 数据结构和算法\1.2.py",encoding='utf-8') as f:
for line,prevlines in search(f,'ACME',5):
for pline in prevlines:
print(pline,end=' ')
print(line,end=' ')
print('-'*20)
q=deque(maxlen=3)
q.append(1)
print(q)
q.append(2)
print(q)
q.append(3) # ->deque([1, 2], maxlen=3)
print(q) # ->deque([1, 2, 3], maxlen=3)
q.append(4)
print(q) # deque([2, 3, 4], maxlen=3)
q=deque()
q.append(1)
q.append(2)
q.append(3)
print(q) # ->deque([1, 2, 3])
q.appendleft(4)
print(q) # ->deque([4, 1, 2, 3])
q.pop()
print(q)# ->deque([4, 1, 2])
q.popleft()
print(q) # ->deque([1, 2])
参考文档:《python cookbook(第3版)高清中文完整版(###).pdf》