collections.deque

返回從左到右初始化的新 deque 物件(使用 append())和來自 iterable 的資料。如果未指定 iterable,則新 deque 為空。

Deques 是堆疊和佇列的概括(名稱發音為 deck,是雙端佇列的縮寫)。Deques 支援執行緒安全,記憶體有效的附加和從 deque 兩側彈出,在任一方向上具有大致相同的 O(1) 效能。

儘管列表物件支援類似的操作,但它們針對快速固定長度操作進行了優化,並導致 pop(0) 和 insert(0, v)操作的 O(n) 記憶體移動成本,這些操作改變了底層資料表示的大小和位置。

版本 2.4 中的新功能。

如果未指定 maxlen 或者是 None,則 deques 可能會增長到任意長度。否則,deque 被限制到指定的最大長度。一旦有限長度 deque 已滿,當新增新專案時,從相對端丟棄相應數量的專案。有界長度 deques 提供類似於 Unix 中的尾部過濾器的功能。它們還可用於跟蹤僅涉及最近活動的事務和其他資料池。

在 2.6 版中更改:新增了 maxlen 引數。

>>> from collections import deque
>>> d = deque('ghi')                 # make a new deque with three items
>>> for elem in d:                   # iterate over the deque's elements
...     print elem.upper()
G
H
I

>>> d.append('j')                    # add a new entry to the right side
>>> d.appendleft('f')                # add a new entry to the left side
>>> d                                # show the representation of the deque
deque(['f', 'g', 'h', 'i', 'j'])

>>> d.pop()                          # return and remove the rightmost item
'j'
>>> d.popleft()                      # return and remove the leftmost item
'f'
>>> list(d)                          # list the contents of the deque
['g', 'h', 'i']
>>> d[0]                             # peek at leftmost item
'g'
>>> d[-1]                            # peek at rightmost item
'i'

>>> list(reversed(d))                # list the contents of a deque in reverse
['i', 'h', 'g']
>>> 'h' in d                         # search the deque
True
>>> d.extend('jkl')                  # add multiple elements at once
>>> d
deque(['g', 'h', 'i', 'j', 'k', 'l'])
>>> d.rotate(1)                      # right rotation
>>> d
deque(['l', 'g', 'h', 'i', 'j', 'k'])
>>> d.rotate(-1)                     # left rotation
>>> d
deque(['g', 'h', 'i', 'j', 'k', 'l'])

>>> deque(reversed(d))               # make a new deque in reverse order
deque(['l', 'k', 'j', 'i', 'h', 'g'])
>>> d.clear()                        # empty the deque
>>> d.pop()                          # cannot pop from an empty deque
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in -toplevel-
    d.pop()
IndexError: pop from an empty deque

>>> d.extendleft('abc')              # extendleft() reverses the input order
>>> d
deque(['c', 'b', 'a'])

資料來源: https//docs.python.org/2/library/collections.html