如何在Python中实现循环缓冲区?

use*_*151 2 python arrays matrix sliding-window

我有一个矩阵

a=[12,2,4,67,8,9,23]
Run Code Online (Sandbox Code Playgroud)

我想要一个代码,它附加一个值为45,并删除第一个值'12',所以本质上我想做

a = [2,4,67,8,9,23,45]
Run Code Online (Sandbox Code Playgroud)

我想使用常规矩阵而不是numpy矩阵,所以我不能使用hstack或vstack如何在python中执行此操作?任何帮助将不胜感激,谢谢

Fog*_*ird 10

使用双端队列.

http://docs.python.org/2/library/collections.html#collections.deque

>>> import collections
>>> d = collections.deque(maxlen=7)
>>> d.extend([12,2,4,67,8,9,23])
>>> d.append(45)
>>> print d
deque([2, 4, 67, 8, 9, 23, 45], maxlen=7)
Run Code Online (Sandbox Code Playgroud)

  • 这使追加操作更加有效,但是使用双端队列比使用列表(O(n)vs O(1))在数据结构中间访问元素的效率较低。 (2认同)