How about creating a simple function for this:
def add_to_array(lst, item, maxsize): if len(lst) >= maxsize: lst.pop(0) lst.append(item)
Which works as follows:
>>> lst = [i for i in range(1, 10)] >>> lst [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> add_to_array(lst, 10, 10) >>> lst [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> add_to_array(lst, 11, 10) >>> lst [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Note. If you are looking for something more efficient, you can use collections.deque as mentioned in another answer.
Here is an example of using deque to emulate the desired behavior:
>>> lst = deque((i for i in range(1, 10)), maxlen=10) >>> lst deque([1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10) >>> lst.append(10) >>> lst deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], maxlen=10) >>> lst.append(11) >>> lst deque([2, 3, 4, 5, 6, 7, 8, 9, 10, 11], maxlen=10)