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

时间:2014-08-14 05:33:44

标签: python performance containers

假设我想要一个容器来存储从50Hz传感器返回的一些值。我希望存储当前值,以及最后100个,以便我可以说出价值如何变化。我在找什么样的容器?我想的可能是deque,有类似的东西:

def updateValue(data):
    self._value.append(data)
    self._value.popleft()

因此,每调用20ms updateValue并在末尾附加一个元素,并从头开始删除一个元素。有没有更有效的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

dequeue是正确的容器类型。

我会传递可选的maxlen参数,以便队列长度绑定到100:

  

如果未指定maxlenNone,则deques可能会变得任意   长度。否则,双端队列将限制为指定的最大值   长度。 一旦有限长度双端队列已满,添加新项目时   从对端丢弃相应数量的项目。   有界长度deques提供类似于尾部过滤器的功能   在Unix中。 它们对跟踪交易和其他信息也很有用   只关注最近活动的数据池。