Python保存最后N个元素

提出问题:

有时候,我们希望能在迭代或者其他处理过程中,保留最后几个符合要求的内容记录。

解决思路:

保存最后N个元素或者有限历史记录,可以用到collections.deque方法。例如,在一个文件里面查找,符合要求的文字,当发现有成功匹配的就输出当前的匹配行以及最后检查过的N行文本。

from collections import deque #导入deque模块

def search(lines,pattern,history=5):
    previous_lines=deque(maxlen=history)
    for line in lines:  #循环遍历
        if pattern in line:
            yield line ,previous_lines  #yield 生成器,暂时保存返回当前变量
        previous_lines.append(line)

if __name__ == '__main__':
    with open('SearchPython.txt') as f: #打开本地文件
        for line ,prevlines in search(f,'python',5):    #在此文件中搜索,规则是python ,次数是5次
            for pline in prevlines:
                print(pline,end='')     #下面是格式输出
            print(line,end='')
            print('-'*20)

本地一个SearchPython.txt文档

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值