Python Language collections.deque


Exemple

Retourne un nouvel objet deque initialisé de gauche à droite (en utilisant append ()) avec les données de l'itérable. Si itable n'est pas spécifié, le nouveau deque est vide.

Les Deques sont une généralisation des piles et des files d'attente (le nom se prononce «deck» et est l'abréviation de «double-queue queue»). Deques supportent ajouter ses thread-sûr, efficace et craquements mémoire de chaque côté de la deque avec approximativement la même O (1) la performance dans les deux sens.

Bien que les objets de liste prennent en charge des opérations similaires, ils sont optimisés pour les opérations rapides de longueur fixe et entraînent des coûts de mouvement de mémoire O (n) pour les opérations pop (0) et insert (0, v). .

Nouveau dans la version 2.4.

Si maxlen n'est pas spécifié ou est None , Deques peut atteindre une longueur arbitraire. Sinon, le deque est limité à la longueur maximale spécifiée. Une fois qu'un deque longueur limitée est plein, lorsque de nouveaux éléments sont ajoutés, un nombre correspondant d'éléments est éliminé de l'extrémité opposée. Les déques de longueur limitée offrent des fonctionnalités similaires à celles du filtre de queue sous Unix. Ils sont également utiles pour le suivi des transactions et des autres pools de données pour lesquels seule l’activité la plus récente présente un intérêt.

Modifié dans la version 2.6: Ajout du paramètre 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'])

Source: https://docs.python.org/2/library/collections.html