本系列来自python cookbook
问题
有时候,我们只需要保留最新的几个元素。比如,最新的二十件新鲜事;再比如,五个最近浏览的网站。所以我们需要一个独特的数据结构,它可以不断容纳新的元素,而当元素量达到容量限制后,先进入容器的元素将依次被丢弃。
class Container:
def __int__(self, capacity):
self.capacity = capacity
self.items = []
def push(self, item):
if len(self.items) == self.capacity:
del self.items[0]
self.items.append(item)
队列
没错,这就是队列。事实上,我们可以用collections.deque来解决这个问题。
from collections import deque
q = deque(maxlen=5)
for i in range(20):
q.append(i)
print q # deque([15, 16, 17, 18, 19], maxlen=5)