1.3保留最后n个元素
迭代运算中如何只保留最后几个元素的历史?
问题描述
迭代运算中如何只保留最后几个元素的历史?
解决方案
结构:collections.deque
例如,以下代码匹配文本的每一行,并返回匹配行之前的最后n行:
从集合导入
def搜索(线条、图案、历史=5):
'''
发电机功能
'''
previous _ lines=deque(maxlen=history)
对于线路:中的线路
第:行的if模式
产量线,前一行
previous_lines.append(行)
if __name__=='__main__':
与f:一起打开(r'test.txt ')
对于行,搜索中的前一行(f,' python ',5):
对于prevlines:中的pline
打印(普林,end=' ')
打印('-' * 20)
总结
Deque是一个双向队列。deque(maxlen=N)将创建一个固定大小的新队列。当添加新元素并且队列已满时,最旧的元素将被移除。
deque类可以用于任何只需要简单队列数据结构的情况。如果不设置最大队列大小,可以得到一个可以存储无限数据的队列。deque可以在队列的两端添加和弹出元素:
q=deque()
q.append(1)
q.append(2)
# deque([1,2])
q.appendleft(4)
# deque([4,1,2])
p=q.pop()
# p=2,q=deque([4,1])
p=q.popleft()
# p=4,q=deque([1])
在队列两端中插入或删除元素的时间复杂度是O(1),而在列表开头中插入或删除元素的时间复杂度是O(N)(因为以下元素必须向后或向前移动)。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/139155.html