Exemple de file d'attente prioritaire Python

Exemple de file d'attente prioritaire Python
Python est l'un des langages de programmation les plus dominants et les plus utilisés. Comme d'autres langages de programmation, il offre de nombreuses fonctions et bibliothèques qui peuvent être utilisées pour implémenter les structures de données de base. La file d'attente est une structure de données très importante; Cependant, ses fonctionnalités peuvent différer en fonction de la façon dont il est implémenté. L'une des fonctionnalités les plus cruciales d'une file d'attente est une file d'attente prioritaire. Dans cet article, nous apprendrons ce qu'est une file d'attente prioritaire et jetez un œil aux différentes implémentations d'une file d'attente prioritaire à Python.

Qu'est-ce qu'une file d'attente prioritaire?

Comme son nom le dit, une file d'attente prioritaire est une file d'attente qui est programmée pour fonctionner selon l'ordre spécifié. Si nous parlons d'une file d'attente simple, cela fonctionne sur l'ordre «FIFO (First in First Out)», je.e., L'élément inséré dans la file d'attente en premier sera également extrait d'abord. Cependant, parfois, nous ne voulons peut-être pas que notre file d'attente fonctionne de cette manière; Nous pourrions plutôt vouloir qu'il suive un autre ordre spécifié. C'est là que les files d'attente prioritaires entrent en jeu, ce qui nous permet d'extraire les éléments d'une file d'attente dans l'ordre de notre choix. Vous pourrez en savoir plus sur leur utilisation en passant par leurs différentes implémentations discutées ci-dessous:

Méthodes de mise en œuvre de la file d'attente prioritaire dans Python:

Nous pouvons utiliser trois méthodes différentes pour implémenter les files d'attente prioritaires dans Python, i.e., À l'aide d'une liste, du module PriorityQueue et du module Heapq. Nous discuterons de ces trois méthodes une par une avec l'aide d'exemples pertinents; Cependant, les données de base que nous utiliserons pour tous ces exemples resteront les mêmes afin que vous puissiez facilement comparer ces différentes méthodes de mise en œuvre.

Remarque: Pour implémenter tous ces exemples dans Python, nous avons utilisé l'outil Spyder avec le système d'exploitation Windows 10.

Méthode n ° 1: Utilisation d'une liste dans Python:

Dans cet exemple, nous souhaitons mettre en œuvre une file d'attente prioritaire qui imprimera les noms des employés et leurs identifiants dans l'ordre décroissant de leurs identifiants, je.e., Le nom de l'employé avec la pièce d'identité d'employée la plus élevée sera imprimée en premier, et ainsi de suite. Pour avoir une telle implémentation, vous pouvez consulter le code suivant:

Dans ce code, nous avons d'abord déclaré une liste nommée «Employés». Après avoir déclaré cette liste, nous essaierons d'insérer les données de certains employés, je.e., ID des employés et nom de l'employé à cette liste avec l'aide de la fonction «Ajouter» intégrée des listes dans Python. Cependant, nous attribuerons les IDS à ces employés dans un ordre aléatoire pendant l'insertion afin que nous puissions facilement visualiser comment cette liste est triée dans la sortie.

Chaque fois que nous souhaitons mettre en œuvre une file d'attente prioritaire à l'aide d'une liste dans Python, nous devons trier la liste dans l'ordre croissant ou décroissant (selon les exigences) après chaque insertion pour agir comme une file d'attente prioritaire. Dans cet exemple, puisque nous voulions imprimer les employés dans l'ordre décroissant de leurs identifiants, nous avons trié la liste par ordre décroissant après chaque insertion en utilisant la fonction «Sort (inverse = true)» de Python à l'exception de la première insertion. Nous n'avons pas appelé la méthode «tri ()» après la première insertion parce que nous n'avions qu'un seul élément dans notre liste à ce moment-là. Enfin, après avoir inséré tous les éléments, nous avons utilisé une boucle «while» sur la liste des employés et imprimé les employés en utilisant la fonction «pop» de Python. Après cela, nous avons enregistré notre code et l'avons exécuté dans l'IDE Spyder.

Le résultat de cette implémentation de la file d'attente prioritaire dans Python est le suivant. Vous pouvez facilement voir que les employés sont imprimés par ordre décroissant de leurs identifiants.

Méthode n ° 2: Utilisation du module PriorityQueue dans Python:

Le module PriorityQueue est une fonction intégrée de la classe «file d'attente» dans Python. Dans cet exemple, nous voulons imprimer les noms des employés dans l'ordre ascendant de leurs identifiants, je.e., L'employé avec l'identification des employés le plus bas sera imprimé en premier et ainsi de suite quel que soit l'ordre de son insertion. Pour que la file d'attente prioritaire soit mise en œuvre de cette manière, vous devrez jeter un œil au code Python illustré ci-dessous:

Dans ce code, nous avons d'abord importé le module PriorityQueue de la classe «file d'attente» Python pour implémenter facilement notre file d'attente de priorité. Ensuite, nous avons une liste d'employés que nous avons égalisés à la fonction «PriorityQueue» pour fonctionner facilement sur la liste des employés. Après cela, nous avons utilisé la fonction «Put» intégrée de Python pour insérer certaines données des employés dans la liste des employés. Ensuite, nous avons une boucle «while» qui iratera dans la liste des employés et imprimera les employés dans l'ordre croissant de leurs identifiants tout en utilisant la fonction «Get», car le module PriorityQueue est programmé pour imprimer les listes dans l'ordre croissant par défaut par défaut.

Le résultat de cette implémentation de la file d'attente prioritaire dans Python est le suivant. Vous pouvez facilement voir que les employés sont imprimés dans l'ordre croissant de leurs identifiants.

Méthode n ° 3: Utilisation du module HeapQ dans Python:

Heapq est encore un autre module intégré de Python qui peut être utilisé pour implémenter des files d'attente prioritaires. Comme la méthode n ° 2, nous voulons imprimer les employés dans l'ordre ascendant de leurs identifiants pour cet exemple. Le code de cette implémentation de la file d'attente prioritaire dans Python peut être vu dans l'image ci-dessous:

Dans ce code, nous avons d'abord importé le module «heapq» de Python pour utiliser facilement les fonctions qui lui sont associées pour insérer et imprimer les données de notre file d'attente prioritaire. Après cela, nous avons déclaré une liste d'employés. Ensuite, nous avons inséré certains enregistrements dans un ordre aléatoire en utilisant le «Heapq.Fonction HeAppush () »du module« Heapq »dans la liste des employés. Ensuite, nous avons simplement une boucle «while» qui est censée itérer sur la liste des employés et imprimer les employés dans l'ordre croissant de leurs identifiants tout en utilisant le «Heapq.Fonction HeAppop () "Puisque le module" Heapq "est programmé pour imprimer les listes par ordre croissant par défaut. Ce module peut également être programmé pour imprimer les listes dans l'ordre descendant; Cependant, c'est au-delà de la portée de cet exemple.

Le résultat de cette implémentation de la file d'attente prioritaire dans Python est le suivant. Vous pouvez facilement voir que les employés sont imprimés dans l'ordre croissant de leurs identifiants.

Conclusion:

Dans cet article, notre objectif principal était sur les files d'attente prioritaires à Python. Nous vous avons présenté brièvement le concept de files d'attente prioritaires à Python. Après avoir établi une bonne compréhension de ce concept, nous avons partagé les trois implémentations différentes des files d'attente prioritaires dans Python dans Windows 10. Une fois que vous avez bien compris ces trois implémentations, vous pouvez choisir l'un de ces.