zoukankan      html  css  js  c++  java
  • 保留最后N个元素

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # Created by xuehz on 2017/2/22
    
    from collections import deque
    
    '''
    双端队列
    >>> q = deque()
    >>> q.append(1)
    >>> q.append(2)
    >>> q.append(3)
    >>> q
    deque([1, 2, 3])
    >>> q.appendleft(4)
    >>> q
    deque([4, 1, 2, 3])
    >>> q.pop()
    3
    >>> q
    deque([4, 1, 2])
    >>> q.popleft()
    4
    
    使用 deque(maxlen=N) 构造函数会新建一个固定大小的队列。
    当新的元素加入并且这个队列已满的时候, 最老的元素会自动被移除掉。
    >>> q = deque(maxlen=3)
    >>> q.append(1)
    >>> q.append(2)
    >>> q.append(3)
    >>> q
    deque([1, 2, 3], maxlen=3)
    >>> q.append(4)
    >>> q
    deque([2, 3, 4], maxlen=3)
    >>> q.append(5)
    >>> q
    deque([3, 4, 5], maxlen=3)
    
    '''
    
    def search(lines, pattern, history=5):
        previous_lines = deque(maxlen=history)
        for li in lines:
            if pattern in li:
                yield li, previous_lines
            previous_lines.append(li)
    
    if __name__ == '__main__':
    
        with open('somefile.txt') as f:
            for line, prevlines in search(f, 'python', 5):
                for pline in prevlines:
                    print(pline, end='')
                print(line, end='')
                print('-' * 20)
    
    
    
  • 相关阅读:
    我的第一篇博客
    文献笔记5
    文献笔记4
    文献笔记8
    文献笔记6
    文献笔记10
    文献笔记7
    文献笔记1
    文献笔记2
    文献笔记3
  • 原文地址:https://www.cnblogs.com/xuehaozhe/p/6436345.html
Copyright © 2011-2022 走看看