Python中什么容器具有固定大小和不断变化的元素

0 投票
1 回答
501 浏览
提问于 2025-04-18 17:15

假设我想要一个容器来存储从传感器每秒返回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 中的尾部过滤器。它们也很适合用来跟踪交易和其他数据池,因为我们通常只关心最新的活动。

撰写回答