python cookbook 1.3 保存最后的N个元素 deque

from collections import deque

deque(maxlen=N)创建了一个固定 长度的队列。deque是队列,可以 再两端执行添加和弹出操作

from collections import deque
q=deque(maxlen=3) #创建一个固定长度的队列
q.append(1)
q.append(2)
q.append(3)
print(q)

q.append(4)
print(q)

que = deque() #不指定队列大小,在两端都可以进行添加和弹出操作
que.append(1)
que.append(2)
que.append(3)
print(que)
que.appendleft(5)
print(que)
que.pop()
print(que)
que.popleft()
print(que)
#  从队列两端插入或删除元素复杂度是O(1),列表头插入或者删除元素复杂度为O(n)

#下面代码做简单的文本匹配操作,当发现有匹配时就输出当前的匹配行以及最后检查过的N行文本
''' 文本内容为
i love python
i love c++
hello world
python is a good language
python is easy
python cookbook
print end
'''
from collections import deque
def search(lines,pattern,history=5):
    prelines = deque(maxlen=history)
    for line in lines:
        if pattern in line:
            yield line,prelines
        prelines.append(line)
if __name__=='__main__':
    with open('file.txt') as f:
        for line,prelines in search(f,'python',5):
            for pline in prelines:
                print(pline,end='')
            print(line,end='')
            print('-'*20)

猜你喜欢

转载自blog.csdn.net/qq_21997625/article/details/86019424