美文网首页
利用python 的collections.deque保存最后N

利用python 的collections.deque保存最后N

作者: g_s_007 | 来源:发表于2024-07-13 22:03 被阅读0次

参考《python cookbook》
如果需要在迭代或者其他形式的处理过程中对最后几项纪录做一个有限的历史记录统计,我们可以使用collections.deque

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2024/7/14 下午9:18
# @Author  : s
# 对文本做简单的文本匹配处理,当发现有匹配时,就输出当前的匹配行以及最后检查过的N行文本
from collections import deque


def search_d(lines, pattern, histoy=5):
    previuos_lines = deque(maxlen=histoy)
    for line in lines:
        if pattern in line:
            yield line, previuos_lines
        previuos_lines.append(line)


if __name__ == '__main__':
    with open('somefile.txt') as f:
        for line, prevlines in search_d(f, 'python', 5):
            for pline in prevlines:
                print(pline, end='')
            print(line, end='')
            print('-'*20)

deque(maxlen=N) 创建一个固定长度的队列,当有新的记录加入且此时队列已满,则会自动移除最老的那条记录

image.png
这样操作比del等优雅的多,运行速度也比较快。
deque(maxlen=N) 还可以对队列的两端执行添加和弹出操作。
image.png

相关文章

网友评论

      本文标题:利用python 的collections.deque保存最后N

      本文链接:https://www.haomeiwen.com/subject/tcpqhjtx.html