CPGE Oujda                                                                                                                                                Sup

Piles et files en Python avec deque

 

En programmation, les piles et files,  LIFO (last in, first out) et FIFO (first in, first out) sont des incontournables. Il s’agit de stocker des données, et surtout de l’ordre dans lequel on récupère celle-ci. Comme Python est un langage haut niveau, il offre une façon simple de mettre en place l’un ou l’autre.

Pourquoi ne pas utiliser simplement une liste ?

Il est possible d’obtenir le même comportement avec une liste, surtout qu’elle offre à peu près les mêmes méthodes (pop), cependant, deque est spécialement prévu pour cette effet, et est donc optimisé dans ce sens. Il est donc préférable d’utiliser deque si l’on sait qu’on l’utilise comme fifo ou lifo.

Comment ça marche ?

Rien de bien compliqué, regardons cette suite de commande effectuée directement avec l’interpréteur.

>>> from collections import deque
>>> pile = deque([1, 2, 3, 4, 5]) #supprime le dernier élément ajouté
>>> pile.pop()
>>> pile.pop()
>>> pile.append(6)
>>>print( pile)
deque([1, 2, 3, 6])

L’ajout dans une file se fait à l’aide de la méthode append()

>>> from collections import deque
>>> file = deque([1, 2, 3, 4, 5])
>>> file.popleft()  #supprime le premier élément de la file
>>> file.popleft()
>>> file.append(6)
>>> print(file)
deque([3, 4, 5, 6])

NB :

Le module vient avec d’autres méthodes pouvant être utile dans ce genre de cas tel que appendleft(), qui permet d’ajouter un élément dans une file