collections.deque#

Deque поддерживает потокобезопасные, эффективные с точки зрения памяти добавления и извлечения с обеих сторон двухсторонней очереди с примерно одинаковой производительностью O(1) в любом направлении.

class collections.deque([iterable[, maxlen]])

Методы deque:

  • append(x)

  • appendleft(x)

  • clear()

  • copy()

  • count(x)

  • extend(iterable)

  • extendleft(iterable)

  • index(x[, start[, stop]])

  • insert(i, x)

  • pop()

  • popleft()

  • remove(value)

  • reverse()

  • rotate(n=1)

  • maxlen

append#

In [1]: from collections import deque

In [2]: d = deque([1, 2, 3])

In [3]: d.append(4)

In [4]: d
Out[4]: deque([1, 2, 3, 4])

In [5]: d.appendleft(0)

In [6]: d
Out[6]: deque([0, 1, 2, 3, 4])

pop#

In [7]: d.pop()
Out[7]: 4

In [9]: d
Out[9]: deque([0, 1, 2, 3])

In [10]: d.popleft()
Out[10]: 0

In [11]: d
Out[11]: deque([1, 2, 3])

index#

In [12]: d[0]
Out[12]: 1

In [13]: d[-1]
Out[13]: 3

rotate#

In [14]: d.rotate(1)

In [15]: d
Out[15]: deque([3, 1, 2])

In [16]: d.rotate(-2)

In [17]: d
Out[17]: deque([2, 3, 1])

maxlen#

In [19]: d = deque([1, 2, 3, 4, 5], maxlen=5)

In [20]: d
Out[20]: deque([1, 2, 3, 4, 5])

In [21]: d.append(6)

In [22]: d
Out[22]: deque([2, 3, 4, 5, 6])

In [23]: d.appendleft(100)

In [24]: d
Out[24]: deque([100, 2, 3, 4, 5])

Пример использования#

def tail(filename, n=10):
    'Return the last n lines of a file'
    with open(filename) as f:
        return deque(f, n)