Python File d'attente : exemple FIFO, LIFO
Qu'est-ce que le Python File d'attente?
Une file d'attente est un conteneur qui contient des donnรฉes. Les donnรฉes saisies en premier seront supprimรฉes en premier, c'est pourquoi une file d'attente est รฉgalement appelรฉe ยซ Premier entrรฉ, premier sorti ยป (FIFO). La file d'attente a deux extrรฉmitรฉs avant et arriรจre. Les articles sont saisis par l'arriรจre et retirรฉs par l'avant.
Comment Python Travail en file d'attente ?
La file d'attente peut รชtre facilement comparรฉe ร l'exemple du monde rรฉel : la file de personnes faisant la queue au guichet, la personne debout en premier recevra le billet en premier, suivie de la personne suivante et ainsi de suite. La mรชme logique s'applique รฉgalement ร la structure des donnรฉes de file d'attente.
Voici une reprรฉsentation schรฉmatique de la file d'attente :
Le Arriรจre reprรฉsente le point oรน les รฉlรฉments sont insรฉrรฉs dans la file d'attente. Dans cet exemple, 7 est la valeur pour cela.
Le Avant reprรฉsente le point oรน les รฉlรฉments de la file d'attente seront supprimรฉs. Si vous supprimez un รฉlรฉment de la file d'attente, le premier รฉlรฉment que vous obtiendrez est 1, comme le montre la figure.
L'รฉlรฉment 1 a รฉtรฉ le premier ร รชtre insรฉrรฉ dans la file d'attente, et lors de sa suppression, il est le premier ร sortir. La file d'attente s'appelle donc FIRST IN FIRST OUT (FIFO).
Dans une file d'attente, les รฉlรฉments sont supprimรฉs dans l'ordre et ne peuvent pas รชtre supprimรฉs entre les deux. Vous ne pouvez tout simplement pas supprimer l'รฉlรฉment 5 au hasard de la file d'attente, pour ce faire, vous devrez supprimer tous les รฉlรฉments avant 5. Les รฉlรฉments de la file d'attente seront supprimรฉs dans l'ordre dans lequel ils sont insรฉrรฉs.
Types de file d'attente dans Python
Il existe principalement deux types de files d'attente Python:
- File d'attente Premier entrรฉ, premier sorti : Pour cela, l'รฉlรฉment qui va en premier sera le premier ร sortir. Pour travailler avec FIFO, il faut appeler File d'attente() classe du module de file dโattente.
- File d'attente Dernier entrรฉ, premier sorti : Ici, l'รฉlรฉment entrรฉ en dernier sera le premier ร sortir. Pour travailler avec LIFO, vous devez appeler LifoQueue() classe du module de file dโattente.
Python Installation de la file d'attente
Il est trรจs simple de travailler avec une file d'attente en python. Voici les รฉtapes ร suivre pour utiliser la file d'attente dans votre code.
รtape 1) Il vous suffit d'importer le module de file d'attente, comme indiquรฉ ci-dessous :
import queue
Le module est disponible par dรฉfaut avec python et vous n'avez besoin d'aucune installation supplรฉmentaire pour commencer ร travailler avec la file d'attente. Il existe 2 types de file d'attente FIFO (premier entrรฉ, premier sorti) et LIFO (dernier entrรฉ, premier sorti).
รtape 2) Pour travailler avec la file d'attente FIFO, appelez la classe Queue ร l'aide du module de file d'attente importรฉ comme indiquรฉ ci-dessous :
import queue q1 = queue.Queue()
รtape 3) Pour travailler avec la file d'attente LIFO, appelez la classe LifoQueue() comme indiquรฉ ci-dessous :
import queue q1 = queue.LifoQueue()
Mรฉthodes disponibles dans les classes Queue et LifoQueue
Voici les mรฉthodes importantes disponibles dans les classes Queue et LifoQueue :
- mettre(รฉlรฉment): Cela placera l'รฉlรฉment dans la file d'attente.
- obtenir(): Cela vous renverra un รฉlรฉment de la file d'attente.
- vide(): Il retournera vrai si la file d'attente est vide et faux si des รฉlรฉments sont prรฉsents.
- qsize() : renvoie la taille de la file d'attente.
- complet(): renvoie vrai si la file d'attente est pleine, sinon faux.
Exemple de file d'attente premier entrรฉ, premier sorti
Dans le cas du premier entrรฉ, premier sorti, lโรฉlรฉment qui va en premier sera le premier ร sortir.
Ajouter un รฉlรฉment dans une file d'attente
Travaillons sur un exemple pour ajouter un รฉlรฉment dans une file d'attente. Pour commencer ร travailler avec la file d'attente, importez d'abord la file d'attente du module, comme indiquรฉ dans l'exemple ci-dessous.
Pour ajouter un รฉlรฉment, vous pouvez utiliser la mรฉthode put() comme indiquรฉ dans l'exemple :
import queue q1 = queue.Queue() q1.put(10) #this will additem 10 to the queue.
Par dรฉfaut, la taille de la file d'attente est infinie et vous pouvez y ajouter n'importe quel nombre d'รฉlรฉments. Si vous souhaitez dรฉfinir la taille de la file d'attente, la mรชme chose peut รชtre faite comme suit
import queue q1 = queue.Queue(5) #The max size is 5. q1.put(1) q1.put(2) q1.put(3) q1.put(4) q1.put(5) print(q1.full()) # will return true.
Sortie :
True
Dรฉsormais, la taille de la file d'attente est de 5, et elle ne prendra pas plus de 5 รฉlรฉments, et la mรฉthode q1.full() retournera true. Lโajout dโรฉlรฉments supplรฉmentaires nโexรฉcutera plus le code.
Supprimer un รฉlรฉment de la file d'attente
Pour supprimer un รฉlรฉment de la file d'attente, vous pouvez utiliser la mรฉthode appelรฉe get(). Cette mรฉthode autorise les รฉlรฉments de la file dโattente lorsquโelle est appelรฉe.
L'exemple suivant montre comment supprimer un รฉlรฉment de la file d'attente.
import queue
q1 = queue.Queue()
q1.put(10)
item1 = q1.get()
print('The item removed from the queue is ', item1)
Sortie :
The item removed from the queue is 10
Exemple de file d'attente Dernier entrรฉ, premier sorti
Dans le cas du dernier dans la file d'attente du premier sorti, l'รฉlรฉment entrรฉ en dernier sera le premier ร sortir.
Pour travailler avec LIFO, c'est-ร -dire dernier dans la file d'attente, premier sorti, nous devons importer le module de file d'attente et utiliser la mรฉthode LifoQueue().
Ajouter un รฉlรฉment dans une file d'attente
Ici, nous comprendrons comment ajouter un รฉlรฉment ร la file d'attente LIFO.
import queue q1 = queue.LifoQueue() q1.put(10)
Vous devez utiliser la mรฉthode put() sur LifoQueue, comme indiquรฉ dans l'exemple ci-dessus.
Supprimer un รฉlรฉment de la file d'attente
Pour supprimer un รฉlรฉment de la file d'attente LIFO, vous pouvez utiliser la mรฉthode get().
import queue
q1 = queue.LifoQueue()
q1.put(10)
item1 = q1.get()
print('The item removed from the LIFO queue is ', item1)
Sortie :
The item removed from the LIFO queue is 10
Ajouter plus d'un รฉlรฉment dans une file d'attente
Dans les exemples ci-dessus, nous avons vu comment ajouter un seul รฉlรฉment et supprimer l'รฉlรฉment pour FIFO et LIFOqueue. Nous allons maintenant voir comment ajouter plus dโun รฉlรฉment et รฉgalement le supprimer.
Ajouter un รฉlรฉment dans une file d'attente FIFO
import queue
q1 = queue.Queue()
for i in range(20):
q1.put(i) # this will additem from 0 to 20 to the queue
Supprimer un รฉlรฉment de la file d'attente FIFO
import queue
q1 = queue.Queue()
for i in range(20):
q1.put(i) # this will additem from 0 to 20 to the queue
while not q1.empty():
print("The value is ", q1.get()) # get() will remove the item from the queue.
Sortie :
The value is 0 The value is 1 The value is 2 The value is 3 The value is 4 The value is 5 The value is 6 The value is 7 The value is 8 The value is 9 The value is 10 The value is 11 The value is 12 The value is 13 The value is 14 The value is 15 The value is 16 The value is 17 The value is 18 The value is 19
Ajouter un รฉlรฉment dans une file d'attente LIFO
import queue
q1 = queue.LifoQueue()
for i in range(20):
q1.put(i) # this will additem from 0 to 20 to the queue
Supprimer un รฉlรฉment de la file d'attente LIFO
import queue
q1 = queue.LifoQueue()
for i in range(20):
q1.put(i) # this will additem from 0 to 20 to the queue
while not q1.empty():
print("The value is ", q1.get()) # get() will remove the item from the queue.
Sortie :
The value is 19 The value is 18 The value is 17 The value is 16 The value is 15 The value is 14 The value is 13 The value is 12 The value is 11 The value is 10 The value is 9 The value is 8 The value is 7 The value is 6 The value is 5 The value is 4 The value is 3 The value is 2 The value is 1 The value is 0
File d'attente de tri
L'exemple suivant montre le tri en file d'attente. L'algorithme utilisรฉ pour le tri est le tri ร bulles.
import queue
q1 = queue.Queue()
#Addingitems to the queue
q1.put(11)
q1.put(5)
q1.put(4)
q1.put(21)
q1.put(3)
q1.put(10)
#using bubble sort on the queue
n = q1.qsize()
for i in range(n):
x = q1.get() # the element is removed
for j in range(n-1):
y = q1.get() # the element is removed
if x > y :
q1.put(y) #the smaller one is put at the start of the queue
else:
q1.put(x) # the smaller one is put at the start of the queue
x = y # the greater one is replaced with x and compared again with nextelement
q1.put(x)
while (q1.empty() == False):
print(q1.queue[0], end = " ")
q1.get()
Sortie :
3 4 5 10 11 21
Revremplir la file d'attente
Pour inverser la file d'attente, vous pouvez utiliser une autre file d'attente et une rรฉcursivitรฉ.
L'exemple suivant montre comment inverser la file d'attente.
Exemple :
import queue
q1 = queue.Queue()
q1.put(11)
q1.put(5)
q1.put(4)
q1.put(21)
q1.put(3)
q1.put(10)
def reverseQueue (q1src, q2dest) :
buffer = q1src.get()
if (q1src.empty() == False) :
reverseQueue(q1src, q2dest) #using recursion
q2dest.put(buffer)
return q2dest
q2dest = queue.Queue()
qReversed = reverseQueue(q1,q2dest)
while (qReversed.empty() == False):
print(qReversed.queue[0], end = " ")
qReversed.get()
Sortie :
10 3 21 4 5 11
Rรฉsumรฉ
- Une file d'attente est un conteneur qui contient des donnรฉes. Il existe deux types de file d'attente, FIFO et LIFO.
- Pour une file d'attente FIFO (First in First out Queue), l'รฉlรฉment qui passe en premier sera le premier ร sortir.
- Pour un LIFO (Last in First out Queue), l'รฉlรฉment entrรฉ en dernier sera le premier ร sortir.
- Un รฉlรฉment dans une file d'attente est ajoutรฉ ร l'aide de la mรฉthode put(item).
- Pour supprimer un รฉlรฉment, la mรฉthode get() est utilisรฉe.


