File d'attente Python: FIFO, exemple LIFO

Table des matières:

Anonim

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, par conséquent, 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 éléments sont saisis par l'arrière et retirés par l'avant.

Dans ce didacticiel 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 la classe Queue et LifoQueue
  • Exemple de file d'attente First In First Out
  • Exemple de file d'attente Last In First Out
  • 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 qui attendent dans une file d'attente au guichet, la personne debout en premier recevra le billet en premier, suivie de la personne suivante, etc. La même logique s'applique également à la structure de 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.

Le Front 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 tout simplement pas supprimer l'élément 5 aléatoirement 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 en Python

Il existe principalement deux types de files d'attente en Python:

  • First in First out Queue: Pour cela, l'élément qui va en premier sera le premier à sortir.

    Pour travailler avec FIFO, vous devez appeler la classe Queue () à partir du module de file d'attente.

  • File d'attente du dernier entré, premier sorti: Ici, l'élément qui est entré en dernier sera le premier à sortir.

    Pour travailler avec LIFO, vous devez appeler la classe LifoQueue () à partir 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 la file d'attente FIFO, appelez la classe Queue à l'aide du module de file d'attente importé comme indiqué ci-dessous:

import queueq1 = queue.Queue()

Étape 3) Pour travailler avec la file d'attente LIFO, appelez la classe LifoQueue () comme indiqué ci-dessous:

import queueq1 = queue.LifoQueue()

Méthodes disponibles dans la classe Queue et LifoQueue

Voici les méthodes importantes disponibles dans la classe Queue et LifoQueue:

  • put (item): Cela placera l'élément dans la file d'attente.
  • get (): Cela vous renverra un élément de la file d'attente.
  • empty (): Il retournera 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.
  • full (): renvoie true si la file d'attente est pleine, sinon false.

Exemple de file d'attente First In First Out

Dans le cas du premier entré, premier sorti, l'élément qui commence en premier sera le premier à sortir.

Ajouter et é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 illustré dans l'exemple ci-dessous.

Pour ajouter un élément, vous pouvez utiliser la méthode put () comme indiqué dans l'exemple:

import queueq1 = 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. Dans le cas où vous souhaitez définir la taille de la file d'attente, la même chose peut être faite comme suit

import queueq1 = 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.

Production:

True

Maintenant, 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'ils sont appelés.

L'exemple suivant montre comment supprimer un élément de la file d'attente.

import queueq1 = queue.Queue()q1.put(10)item1 = q1.get()print('The item removed from the queue is ', item1)

Production:

The item removed from the queue is 10

Exemple de file d'attente Last In First Out

Dans le cas du dernier dans la première file d'attente, l'élément qui est entré en dernier sera le premier à sortir.

Pour travailler avec LIFO, c'est-à-dire le dernier dans la première file d'attente, nous devons importer le module de file d'attente et utiliser la méthode LifoQueue ().

Ajouter et élément dans une file d'attente

Ici, nous allons comprendre comment ajouter un élément à la file d'attente LIFO.

import queueq1 = 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 LIFOqueue, vous pouvez utiliser la méthode get ().

import queueq1 = queue.LifoQueue()q1.put(10)item1 = q1.get()print('The item removed from the LIFO queue is ', item1)

Production:

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 élément unique 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 FIFOqueue

import queueq1 = 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 FIFOqueue

import queueq1 = queue.Queue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queuewhile not q1.empty():print("The value is ", q1.get()) # get() will remove the item from the queue.

Production:

The value is 0The value is 1The value is 2The value is 3The value is 4The value is 5The value is 6The value is 7The value is 8The value is 9The value is 10The value is 11The value is 12The value is 13The value is 14The value is 15The value is 16The value is 17The value is 18The value is 19

Ajouter un élément dans une LIFOqueue

import queueq1 = 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 queueq1 = queue.LifoQueue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queuewhile not q1.empty():print("The value is ", q1.get()) # get() will remove the item from the queue. 

Production:

The value is 19The value is 18The value is 17The value is 16The value is 15The value is 14The value is 13The value is 12The value is 11The value is 10The value is 9The value is 8The value is 7The value is 6The value is 5The value is 4The value is 3The value is 2The value is 1The 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 queueq1 = queue.Queue()#Addingitems to the queueq1.put(11)q1.put(5)q1.put(4)q1.put(21)q1.put(3)q1.put(10)#using bubble sort on the queuen = q1.qsize()for i in range(n):x = q1.get() # the element is removedfor j in range(n-1):y = q1.get() # the element is removedif x> y :q1.put(y) #the smaller one is put at the start of the queueelse:q1.put(x) # the smaller one is put at the start of the queuex = y # the greater one is replaced with x and compared again with nextelementq1.put(x)while (q1.empty() == False):print(q1.queue[0], end = " ")q1.get()

Production:

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 une autre récursivité.

L'exemple suivant montre comment inverser la file d'attente.

Exemple:

import queueq1 = 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 recursionq2dest.put(buffer)return q2destq2dest = queue.Queue()qReversed = reverseQueue(q1,q2dest)while (qReversed.empty() == False):print(qReversed.queue[0], end = " ")qReversed.get()

Production:

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 va en premier sera le premier à sortir.
  • Pour un LIFO (Last in First out Queue), l'élément qui est 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.