Les Deques de Python 2.4
Par tarek le 13/03/2005 01:39
Catégories : autre
Modules python : collections
Version Python : 2.4
La Deque attitude (double-ended queue).
Derrière ce nom un peu étrange se cache une classe qui offre des perspectives intéressantes.
Instancié avec une séquence (liste, tuple ou chaine de caractères), le Deque fourni des méthodes d'accès et de transformation des éléments de la séquence qui sont aussi rapides quelque soit le "coté" par lequel la séquence est attaquée.
Par exemple, insérer un élement au début ou a la fin de la séquence sera aussi rapide.
La Deque-nique
- deque([iterable]) : instanciation d'un deque
- append(x) : ajout d'un élément à droite
- appendleft(x) : ajout d'un élément à gauche
- clear() : vide la séquence
- extend(iterable) : étends avec une autre séquence
- extendleft(iterable): étends à gauche avec une autre séquence
- pop() : retire et renvoi le dernier element de droite
- popleft() : retire et renvoi le dernier element de gauche
- rotate(n) : rotation des élements de n pas
Exemples
Plutôt que de réfléchir à des exemples,voici ceux fournis sur le site python :
>>> 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'])
Plus loin dans le Deque
Vous trouverez des uses cases intéressants sur le site Python à cette url :
http://www.python.org/doc/2.4/lib/deque-recipes.html







Couplons -pour rester dans la philo- ce Module "deque" à ce Module "Set" dont voici quelques exemples pour ne pas monopoliser en discours.
http://www.python.org/doc/2.3.4/lib/set-example.html.