Python / Cython / Numpy эффективно поддерживает список с максимальной длиной - PullRequest
0 голосов
/ 28 августа 2018

Мне нужны некоторые советы или решения о том, как эффективно поддерживать список объектов (диктов или пользовательских типов Python через Cython), ограниченный максимальной длиной.

В основном это занимает слишком много времени:

my_list = [a, b, c, d, ....]
my_list = my_list[-50:]

Есть ли эффективный способ составления списка с использованием Python, Cython (C / C ++), Numpy, который забывает самый старый элемент, добавленный к нему выше порога? Например, свыше 50 наименований.

1 Ответ

0 голосов
/ 28 августа 2018

Модуль коллекций Python имеет deque или «двустороннюю очередь», которой можно эффективно манипулировать либо в начале, либо в конце массива. Вы можете поставить максимальный размер на один, например,

from collections import deque
d = deque(maxlen=5)

d.extend(range(4)) # -> [0,1,2,3]    # before maxlen
d.append(4)        # -> [0,1,2,3,4]  # at max len
d.append(5)        # -> [1,2,3,4,5]  # drops first entry on appending beyond maxlen
...