2015-12-05 5 views
1

Я ищу простой способ добавления в список фиксированных размеров.Добавление в фиксированный список

Если список имеет максимальное значение n, и в этот список добавлен еще один элемент, первый элемент list будет удален.

Существует способ, но я думаю, что он не эффективен, и это довольно перебор. Как мне это сделать?

class fix_sized_list(): 
    def __init__(self,_max): 
     self.max = _max 
     self._list = [] 

    def add(self,item): 
     print len(self._list) 
     if len(self._list)>=self.max: 
      self._list.pop(0) 
      self._list.append(item) 
     else: 
      self._list.append(item) 


c = fix_sized_list(8) 

for x in range(50): 
    c.add(x) 
    print c._list 

ВЫВОД:

[0] 
[0, 1] 
[0, 1, 2] 
[0, 1, 2, 3] 
[0, 1, 2, 3, 4] 
[0, 1, 2, 3, 4, 5] 
[0, 1, 2, 3, 4, 5, 6] 
[0, 1, 2, 3, 4, 5, 6, 7] 
[1, 2, 3, 4, 5, 6, 7, 8] 
[2, 3, 4, 5, 6, 7, 8, 9] 

ответ

4

Вместо списка, используйте deque (который в основном работает как простая очередь данных Страница данными). Предоставьте ему аргумент maxlen, чтобы исправить его размер.

>>> from collections import deque 
>>> queue = deque(maxlen=2) 
>>> queue.append(1) 
>>> queue 
deque([1], maxlen=2) 
>>> queue.append(2) 
>>> queue 
deque([1, 2], maxlen=2) 
>>> queue.append(3) 
>>> queue 
deque([2, 3], maxlen=2) 
Смежные вопросы