В документах python я вижу, что deque - это специальная коллекция, оптимизированная для ввода/добавления элементов с левой или с правой стороны. Например. документация говорит:
Deques - это обобщение стеков и очередей (имя произносится как "колода" и не подходит для "двойной очереди" ). двусторонние очереди поддержка потокобезопасной памяти, добавление памяти и всплывающих окон из стороне дека с примерно одинаковым значением O (1) в в любом направлении.
Хотя объекты списка поддерживают подобные операции, они оптимизированы для быстрых операций с фиксированной длиной и несут затраты на движение памяти O (n) для pop (0) и вставить (0, v) операции, которые изменяют как размер, так и положение базового представления данных.
Я решил сделать некоторые сравнения с помощью ipython. Может ли кто-нибудь объяснить мне, что я сделал неправильно здесь:
In [31]: %timeit range(1, 10000).pop(0)
10000 loops, best of 3: 114 us per loop
In [32]: %timeit deque(xrange(1, 10000)).pop()
10000 loops, best of 3: 181 us per loop
In [33]: %timeit deque(range(1, 10000)).pop()
1000 loops, best of 3: 243 us per loop