保存最后N个元素

1.3.1

question(提出问题): 

在迭代或其他处理过程中对最后几项记录做历史记录

solution(解决方法):

  1. 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(补充):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值