Python中什么容器具有固定大小和不断变化的元素
假设我想要一个容器来存储从传感器每秒返回50次的值。我想保存当前的值,以及之前的100个值,这样我就可以分析这些值是如何变化的。我应该用什么样的容器呢?我在想可能可以用双端队列(deque),像这样:
def updateValue(data):
self._value.append(data)
self._value.popleft()
所以每20毫秒就会调用一次updateValue,把一个新值加到末尾,同时从开头移除一个值。有没有更高效的方法来实现这个呢?
1 个回答
1
deque
是一种合适的容器类型。
我建议你传入一个可选的 maxlen
参数,这样队列的长度就限制在100个元素:
如果没有指定
maxlen
或者它是None
,那么双端队列(deque)可以无限增长。否则,deque 的长度就会被限制在你指定的最大值。一旦这个有限长度的 deque 满了,当你添加新元素时,队列另一端会自动丢弃相应数量的元素。 有限长度的 deque 提供的功能类似于 Unix 中的尾部过滤器。它们也很适合用来跟踪交易和其他数据池,因为我们通常只关心最新的活动。