[GO] Module d'implémentation de file d'attente et Python "deque"

Il semble préférable d'utiliser une structure de données appelée file d'attente lors de la mise en œuvre de la recherche de priorité de largeur, donc Cette fois, j'ai regardé dans la file d'attente.

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

La file d'attente, ou file d'attente, est l'une des structures de données de base d'un ordinateur. Il contient les données dans une structure de liste premier entré, premier sorti. Lors de la récupération des données de la file d'attente, les données qui ont été insérées en premier sont récupérées dans l'ordre. Mettre des données dans une file d'attente s'appelle mettre en file d'attente, et les retirer s'appelle dequeue. (De Wikipedia)

La figure montre une structure de données avec la structure suivante.

queue_example.png

L'image est comme un cylindre. Les données peuvent être placées dans la file d'attente derrière la file d'attente (mise en file d'attente), Les données peuvent être récupérées depuis le début de la file d'attente (dequeue). En raison de la structure, les données qui peuvent être récupérées sont dans l'ordre dans lequel elles sont mises en file d'attente. La figure ci-dessous montre la mise en file d'attente et le retrait de la file d'attente.

queue_enqueue.png queue_dequeue.png

Comment implémenter en Python

Pour implémenter une file d'attente en Python, utilisez le type ** deque ** du module ** collections **. Bien qu'il s'agisse de ce type deque, il a une structure de données qui a une fonction de pile en plus d'une file d'attente et peut être utilisé comme une pile en fonction de la façon dont il est utilisé. Cette fois, l'explication est basée sur l'hypothèse qu'elle sera utilisée comme file d'attente.

Créer une file d'attente

Importez deque pour créer un objet de file d'attente.

>>> from collections import deque
>>> 
>>> a=deque()
>>> 

Ajout d'éléments à la file d'attente

Pour ajouter un élément à deque, utilisez la fonction ** append ** (). La fonction d'ajout ajoute un élément du côté droit de la file d'attente. Ce n'est pas l'utilisation d'origine de la file d'attente, mais pour ajouter à partir de la gauche, utilisez la fonction ** appendleft ** ().

>>> a
deque([])
>>> 
>>> a.append(1)
>>> a
deque([1])
>>> 
>>> a.append(2)
>>> a
deque([1, 2])
>>> 
>>> a.appendleft(3)
>>> a
deque([3, 1, 2])
>>> 

Ajouter un autre élément de liste à la file d'attente à la fois

Si vous souhaitez ajouter des éléments d'une autre liste à la file d'attente en une seule fois, utilisez la fonction ** extend **. Si vous souhaitez ajouter à partir du côté gauche de la file d'attente, utilisez la fonction ** extendleft **. (Les éléments à gauche de la liste sont ajoutés à la file d'attente dans l'ordre.)

>>> a
deque([1])
>>> 
>>> b=[2,3,4]
>>> 
>>> a.extend(b)
>>> 
>>> a
deque([1, 2, 3, 4])
>>> 
>>> a.extendleft(b)
>>> 
>>> a
deque([4, 3, 2, 1, 2, 3, 4])
>>> 

Extraire / supprimer des éléments de la file d'attente

Utilisez la fonction ** pop ** pour récupérer des éléments de deque. La fonction pop supprime un élément du côté droit du deque et renvoie cet élément. Si vous souhaitez extraire un élément du côté gauche de deque, utilisez la fonction ** popleft **.

De plus, si vous souhaitez supprimer un élément spécifique de deque, utilisez la fonction ** remove **. Utilisez deque.remove (x) pour supprimer le premier x qui apparaît dans le deque.

>>> a
deque([3, 1, 2])
>>> 
>>> a.pop()
2
>>> a
deque([3, 1])
>>> 
>>> a.popleft()
3
>>> a
deque([1])
>>> 
>>> 
>>> a.append(2)
>>> a.append(2)
>>> a.append(3)
>>> 
>>> 
>>> a
deque([1, 2, 2, 3])
>>> 
>>> a.remove(2)
>>> a
deque([1, 2, 3])
>>> 

Supprimer tous les éléments de la file d'attente

Utilisez la fonction ** clear ** pour supprimer tous les éléments de la file d'attente.

>>> a
deque([1, 2, 3])
>>> 
>>> a.clear()
>>> 
>>> a
deque([])
>>> 

Inverser l'ordre des éléments dans la file d'attente

Utilisez la fonction ** reverse ** pour inverser l'ordre des éléments dans la file d'attente.

>>> a
deque([1, 2, 3, 4])
>>> 
>>> a.reverse()
>>> 
>>> a
deque([4, 3, 2, 1])
>>> 

Je veux l'utiliser à l'avenir.

Recommended Posts

Module d'implémentation de file d'attente et Python "deque"
Pile et file d'attente en Python
Algorithme de tri et implémentation en Python
Importation de modules et gestion des exceptions en python
Implémentation RNN en python
Implémentation ValueObject en Python
Traitement des requêtes en Python
Implémentation SVM en python
Explication de la distance d'édition et de l'implémentation en Python
Fusion de la mise en œuvre du tri / analyse du montant du calcul et de l'expérimentation en Python
Symboles logiques appris dans le mariage (et exemples d'implémentation en Python)
Module de débogage et de test Python
Implémentation de réseau neuronal en python
Unittest et CI en Python
Description et implémentation de Maxout (Python)
Implémentation du tri rapide en Python
Exemple d'obtention du nom du module et du nom de la classe en Python
Module Python num2words Différence de comportement entre l'anglais et le russe
Paquets qui gèrent le MIDI avec Python midi et pretty_midi
Différence entre list () et [] en Python
Différence entre == et est en python
[Python] journalisation dans votre propre module
Afficher les photos en Python et html
Implémentation de l'estimation des paramètres HMM en python
Implémentation de distribution normale mixte en python
Manipuler des fichiers et des dossiers en Python
À propos de Python et Cython dtype
Affectations et modifications des objets Python
Implémentation du jeu de vie en Python
Coopération entre le module python et l'API
Vérifiez et déplacez le répertoire en Python
Chiffrement avec Python: IND-CCA2 et RSA-OAEP
Hashing de données en R et Python
Module de socket Python 3 et flux de communication de socket
Exécuter le module Python unittest dans vs2017
Synthèse de fonctions et application en Python
J'ai écrit la file d'attente en Python
Exporter et exporter des fichiers en Python
Implémentation du tri original en Python
Inverser le pseudonyme plat et le katakana en Python2.7
Lire et écrire du texte en Python
[GUI en Python] Menu PyQt5 et barre d'outils-
Créer et lire des paquets de messages en Python
Maîtriser le module lowref en Python
Chevauchement d'expressions régulières en Python et Java
Différence d'authenticité entre Python et JavaScript
Notes utilisant cChardet et python3-chardet dans Python 3.3.1.
Différences entre Ruby et Python dans la portée
Modulation et démodulation AM avec Python Partie 2
différence entre les instructions (instructions) et les expressions (expressions) en Python
Valeurs authentiques et vecteurs propres: Algèbre linéaire en Python <7>
Graphique à lignes pliées et ligne d'échelle en python
Comparaison des modules de conversion japonais en Python3
Implémenter le filtre FIR en langage Python et C
Différences entre la syntaxe Python et Java
Vérifier et recevoir le port série en Python (vérification du port)
Rechercher et lire des vidéos YouTube avec Python
Différence entre @classmethod et @staticmethod en Python