1.3.1
question(提出问题):
在迭代或其他处理过程中对最后几项记录做历史记录
solution(解决方法):
- 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)
if __name__ == '__main__':
with open('C:\\code\\pycharm projects\\run.py') as f:
for line, prevlines in search(f, 'for', 5):
for pline in prevlines:
print(pline, end='')
print(line, end='')
print('-'*20)
------------------------------
function (函数介绍):
# deque 队列: 可在两端添加和弹出元素,复杂度log(1)
---------------------------------------------------
q = deque(maxlen=3) # 创建队列,maxlen指定长度N,不指定则为无限长队列
q.append(4) # 添加元素,若超过N,新加入元素前队列会自动移除最先加入的记录,保持长度不变
q.pop() # 默认在队列尾弹出
q.popleft() # 左端弹出
q.appendleft()
discussion(讨论):
application(应用场景):
tips(使用技巧):
puzzle(疑点待解):
add(补充):