假设我想要一个容器来存储从50Hz传感器返回的一些值。我希望存储当前值,以及最后100个,以便我可以说出价值如何变化。我在找什么样的容器?我想的可能是deque,有类似的东西:
def updateValue(data):
self._value.append(data)
self._value.popleft()
因此,每调用20ms updateValue并在末尾附加一个元素,并从头开始删除一个元素。有没有更有效的方法来做到这一点?
答案 0 :(得分:1)
dequeue是正确的容器类型。
我会传递可选的maxlen
参数,以便队列长度绑定到100:
如果未指定
maxlen
或None
,则deques可能会变得任意 长度。否则,双端队列将限制为指定的最大值 长度。 一旦有限长度双端队列已满,添加新项目时 从对端丢弃相应数量的项目。 有界长度deques提供类似于尾部过滤器的功能 在Unix中。 它们对跟踪交易和其他信息也很有用 只关注最近活动的数据池。