python - 有效的循环缓冲区?

标签 python circular-buffer

我想创建一个高效的circular buffer在 python 中(目的是取缓冲区中整数值的平均值)。

这是使用列表收集值的有效方法吗?

def add_to_buffer( self, num ):
    self.mylist.pop( 0 )
    self.mylist.append( num )

什么会更有效(为什么)?

最佳答案

我会使用 collections.deque带有 maxlen 参数

>>> import collections
>>> d = collections.deque(maxlen=10)
>>> d
deque([], maxlen=10)
>>> for i in xrange(20):
...     d.append(i)
... 
>>> d
deque([10, 11, 12, 13, 14, 15, 16, 17, 18, 19], maxlen=10)

有一个recipedeque 的文档中与您想要的类似。我断言它是最有效的完全取决于这样一个事实,即它是由一个非常熟练的团队用 C 实现的,他们习惯于编写一流的代码。

关于python - 有效的循环缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4151320/

相关文章:

python - 在 python 端动态调整 kivy 标签(和按钮)的大小

c - 无指针双向圆阵算法

python - 如何通过网络发送对象

python - 从多个列表读取到 Pandas Dataframe 中

具有可变大小项目的循环缓冲区实现

sql - 如何在窗口函数中使用环形数据结构

c++ - 调用线性化后奇怪的 boost 循环缓冲区行为

python - 在 python 中设置 Redis 循环?

python - 如何简单地覆盖被替换元素的列表

python - 查找具有给定排名的所有固定长度的子数组