Skip to content
Advertisement

Python Datatype for a fixed-length FIFO

I would like to know if there is a native datatype in Python that acts like a fixed-length FIFO buffer. For example, I want do create a length-5 FIFO buffer that is initialized with all zeros. Then, it might look like this:

[0,0,0,0,0]

Then, when I call the put function on the object, it will shift off the last zero and put the new value, say 1, into the left side:

[1,0,0,0,0]

If I put a 2, it would then shift and put to look like this:

[2,1,0,0,0]

…and so on. The new value goes at the front and the oldest one is shifted off. I understand that this would be very easy to implement myself, but I would like to use native python datatypes if at all possible. Does anyone know which datatype would be best for this?

Advertisement

Answer

x = collections.deque(5*[0], 5)

See the docs for more about collections.deque; the method you call push is actually called appendleft in that type.

The second parameter (maxlen, giving the maximum lengths) was added in Python 2.6; if you’re using older versions of Python, it won’t be available.

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement