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)