File d'attente Python :exemple FIFO, LIFO
Qu'est-ce que la file d'attente Python ?
Une file d'attente est un conteneur qui contient des données. Les données qui sont entrées en premier seront supprimées en premier, et donc une file d'attente est également appelée "First in First Out" (FIFO). La file d'attente a deux extrémités avant et arrière. Les éléments sont saisis par l'arrière et retirés par le recto.
Dans ce tutoriel Python, vous apprendrez :
- Qu'est-ce que la file d'attente Python ?
- Comment fonctionne la file d'attente Python ?
- Types de file d'attente en Python
- Installation de la file d'attente Python
- Méthodes disponibles dans les classes Queue et LifoQueue
- Exemple de file d'attente premier entré, premier sorti
- Exemple de file d'attente Dernier entré, premier sorti
- Ajouter plus d'un élément dans une file d'attente
- File d'attente de tri
- File d'attente inversée
Comment fonctionne la file d'attente Python ?
La file d'attente peut être facilement comparée à l'exemple du monde réel, la file de personnes attendant dans une file d'attente au guichet, la personne debout en premier obtiendra 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 la file d'attente.
Voici une représentation schématique de la file d'attente :
L'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.
L'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 indiqué sur 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. Par conséquent, la file d'attente est appelée 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 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 en file d'attente seront supprimés dans l'ordre dans lequel ils sont insérés.
Types de file d'attente en Python
Il existe principalement deux types de files d'attente en Python :
- First in First out Queue :pour cela, l'élément qui sort en premier sera le premier à sortir.
Pour travailler avec FIFO, vous devez appeler Queue() classe du module de file d'attente.
- Dernier entré, premier sorti de la file d'attente :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.
Installation de la file d'attente Python
Il est très facile de travailler avec la 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 FIFO queue , appelez la classe Queue en utilisant le module queue 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 renverra true si la file d'attente est vide et false si des éléments sont présents.
- qsize() : renvoie la taille de la file d'attente.
- plein() : 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 sorti en premier sera le premier sorti.
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
Maintenant, la taille de la file d'attente est de 5, et cela ne prendra pas plus de 5 éléments, et la méthode q1.full() renverra 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
En cas de 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 du 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 allons comprendre 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 plusieurs éléments et également les 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 LIFOqueue
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 de la 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
File d'attente inversée
Pour inverser la file d'attente, vous pouvez utiliser une autre file d'attente et la 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 un FIFO (First in First out Queue), l'élément qui sort 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.
Python
- Opérateurs Python
- Dictionnaire Python
- Python String strip() Fonction avec EXAMPLE
- Longueur de la chaîne Python | Méthode len() Exemple
- Rendement en Python Tutoriel :Exemple de générateur et rendement vs retour
- Compteur Python dans les collections avec exemple
- Fonction Enumerate() en Python :boucle, tuple, chaîne (exemple)
- Python time.sleep() :ajoutez un délai à votre code (exemple)
- Index de liste Python () avec exemple