По правде говоря, всего для 85 предметов практически любой метод, который вы хотите использовать, будет более чем достаточно быстрым.Не оптимизируйте преждевременно.
Тем не менее, в зависимости от того, что вы на самом деле делаете, list
может быть быстрее, чем deque
.deque
быстрее для добавления и удаления элементов на обоих концах, но не поддерживает нарезку.
Со списком, если вы хотите скопировать или удалить непрерывный диапазон элементов (скажем, первые 42), вы можете сделать это с помощью среза.Предполагая, что половина списка удаляется при каждом проходе, копирование элементов в новый список будет в среднем медленнее, чем удаление элементов из существующего списка (удаление требует перемещения половины списка, который не удаляется, «влево» в памяти, что будетпримерно столько же времени, сколько копирование другой половины, но вам не всегда нужно это делать; при удалении второй половины списка не нужно ничего перемещать).
Чтобы сделать это с помощью deque
эффективно, вы бы хотели pop()
или popleft()
элементы, а не разрезать их (много доступа к атрибутам и вызовам методов, которые относительно дороги в Python), и вам нужно было бы написать цикл, который контролируетоперация в Python, которая будет медленнее, чем операция с собственным слайсом.
Поскольку вы сказали, что это в основном бинарный поиск, возможно, быстрее всего будет просто найти элемент, который вы хотите сохранить, без изменения исходного контейнера вообщеи затем верните новый контейнер, содержащий этот единственный элемент.list
будет быстрее для этого, чем deque
, так как вы будете делать много доступа к элементам по индексу.Для этого в deque
потребуется, чтобы Python следовал за связанным списком с самого начала каждый раз, когда вы обращаетесь к элементу, тогда как доступ к элементу по индексу - это простой и быстрый расчет для list
.