保存最后n个元素

本系列来自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)

你可能感兴趣的:(保存最后n个元素)