问题
如何保存迭代对象的最后N个元素
例如保存列表['a', 'b', 'c', 'd']
的最后2个元素
或者保存某个迭代器对象的最后5个元素
解决方案
对于列表、元组这样的数据结构,可以使用切片来很方便的实现,例如保存列表l
的最后3个元素就可以直接l[-3:]
但有些时候,我们操作的可迭代对象不能使用切片
这个时候可以使用collections
库里的deque
(双端队列)数据结构
from collections import deque
def foo():
for i in range(100):
yield i
last_5 = list(deque(foo(), maxlen=5))
print(last_5)