[GO] Warteschlangen- und Python-Implementierungsmodul "deque"

Es scheint besser zu sein, eine Datenstruktur zu verwenden, die als Warteschlange bezeichnet wird, wenn die Suche nach Breitenpriorität implementiert wird Diesmal habe ich in die Warteschlange geschaut.

Was ist eine Warteschlange?

Warteschlange oder Warteschlange ist eine der grundlegenden Datenstrukturen eines Computers. Es enthält Daten in einer First-In- und First-Out-Listenstruktur. Beim Abrufen von Daten aus der Warteschlange werden die zuerst eingegebenen Daten der Reihe nach abgerufen. Das Einfügen von Daten in eine Warteschlange wird als Warteschlange bezeichnet, und das Herausnehmen von Daten wird als Warteschlange bezeichnet. (Aus Wikipedia)

Die Abbildung zeigt eine Datenstruktur mit folgender Struktur.

queue_example.png

Das Bild ist wie ein Zylinder. Daten können hinter der Warteschlange (Enqueue) in die Warteschlange gestellt werden. Daten können vom Anfang der Warteschlange (Dequeue) abgerufen werden. Aufgrund der Struktur befinden sich die abrufbaren Daten in der Reihenfolge, in der sie in die Warteschlange gestellt werden. Die folgende Abbildung zeigt die Warteschlange und die Warteschlange.

queue_enqueue.png queue_dequeue.png

So implementieren Sie in Python

Verwenden Sie zum Implementieren einer Warteschlange in Python den Typ ** deque ** des Moduls ** collection **. Obwohl es sich um einen Deque-Typ handelt, verfügt er über eine Datenstruktur, die zusätzlich zu einer Warteschlange über eine Stapelfunktion verfügt und je nach Verwendung als Stapel verwendet werden kann. Diesmal basiert die Erklärung auf der Annahme, dass sie als Warteschlange verwendet wird.

Warteschlange erstellen

Deque importieren, um ein Warteschlangenobjekt zu erstellen.

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

Hinzufügen von Elementen zur Warteschlange

Verwenden Sie die Funktion ** append ** (), um ein Element zum Deque hinzuzufügen. Die Append-Funktion fügt ein Element von der rechten Seite der Warteschlange hinzu. Es ist nicht die ursprüngliche Verwendung der Warteschlange, aber um von links hinzuzufügen, verwenden Sie die Funktion ** appendleft ** ().

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

Fügen Sie der Warteschlange sofort ein weiteres Listenelement hinzu

Wenn Sie der Warteschlange sofort Elemente aus einer anderen Liste hinzufügen möchten, verwenden Sie die Funktion ** Erweitern **. Wenn Sie von der linken Seite der Warteschlange hinzufügen möchten, verwenden Sie die Funktion ** extensleft **. (Die Elemente links in der Liste werden der Reihe nach der Warteschlange hinzugefügt.)

>>> 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])
>>> 

Elemente aus der Warteschlange extrahieren / löschen

Verwenden Sie die Funktion ** pop **, um Elemente aus deque abzurufen. Die Pop-Funktion entfernt ein Element von der rechten Seite der Deque und gibt dieses Element zurück. Wenn Sie ein Element von der linken Seite der Deque extrahieren möchten, verwenden Sie die Funktion ** popleft **.

Wenn Sie ein bestimmtes Element aus deque entfernen möchten, verwenden Sie die Funktion ** remove **. Verwenden Sie deque.remove (x), um das erste x zu entfernen, das in der Deque angezeigt wird.

>>> 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])
>>> 

Entfernen Sie alle Elemente aus der Warteschlange

Verwenden Sie die Funktion ** clear **, um alle Elemente aus der Warteschlange zu entfernen.

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

Kehren Sie die Reihenfolge der Elemente in der Warteschlange um

Verwenden Sie die Funktion ** reverse **, um die Reihenfolge der Elemente in der Warteschlange umzukehren.

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

Ich möchte es in Zukunft nutzen.

Recommended Posts

Warteschlangen- und Python-Implementierungsmodul "deque"
Stapel und Warteschlange in Python
Sortieralgorithmus und Implementierung in Python
Modulimport und Ausnahmebehandlung in Python
RNN-Implementierung in Python
ValueObject-Implementierung in Python
Verarbeitung in Python beenden
SVM-Implementierung in Python
Erläuterung der Bearbeitungsentfernung und Implementierung in Python
Führen Sie die Sortierimplementierung / Berechnungsmengenanalyse zusammen und experimentieren Sie in Python
In der Ehe erlernte logische Symbole (und Implementierungsbeispiele in Python)
Python-Debug- und Testmodul
Implementierung eines neuronalen Netzwerks in Python
Unittest und CI in Python
Maxout Beschreibung und Implementierung (Python)
Implementierung der schnellen Sortierung in Python
Beispiel für das Abrufen des Modulnamens und des Klassennamens in Python
Python-Modul num2words Verhaltensunterschied zwischen Englisch und Russisch
Pakete, die MIDI mit Python Midi und Pretty_Midi verarbeiten
Unterschied zwischen list () und [] in Python
Unterschied zwischen == und ist in Python
[Python] Anmelden Ihres eigenen Moduls
Zeigen Sie Fotos in Python und HTML an
Implementierung der HMM-Parameterschätzung in Python
Implementierung einer gemischten Normalverteilung in Python
Bearbeiten Sie Dateien und Ordner in Python
Über Python und Cython dtype
Zuweisungen und Änderungen in Python-Objekten
Implementierung eines Lebensspiels in Python
Zusammenarbeit zwischen Python-Modul und API
Überprüfen und verschieben Sie das Verzeichnis in Python
Verschlüsselung mit Python: IND-CCA2 und RSA-OAEP
Hashing von Daten in R und Python
Python 3-Socket-Modul und Socket-Kommunikationsfluss
Führen Sie das Python-Unittest-Modul in vs2017 aus
Funktionssynthese und Anwendung in Python
Ich habe die Warteschlange in Python geschrieben
Exportieren und Ausgeben von Dateien in Python
Implementierung der ursprünglichen Sortierung in Python
Reverse Flat Pseudonym und Katakana in Python2.7
Lesen und Schreiben von Text in Python
[GUI in Python] PyQt5-Menü und Symbolleiste-
Erstellen und lesen Sie Messagepacks in Python
Beherrsche das schwache Ref-Modul in Python
Überlappende reguläre Ausdrücke in Python und Java
Unterschied in der Authentizität zwischen Python und JavaScript
Hinweise zur Verwendung von cChardet und python3-chardet in Python 3.3.1.
Unterschiede zwischen Ruby und Python im Umfang
AM-Modulation und Demodulation mit Python Part 2
Unterschied zwischen Anweisungen (Anweisungen) und Ausdrücken (Ausdrücken) in Python
Echte Werte und Eigenvektoren: Lineare Algebra in Python <7>
Gefaltetes Liniendiagramm und Skalierungslinie in Python
Vergleich japanischer Konvertierungsmodule in Python3
Implementieren Sie den FIR-Filter in Python und C.
Unterschiede zwischen Python- und Java-Syntax
Überprüfen und empfangen Sie die serielle Schnittstelle in Python (Portprüfung)
Suchen und spielen Sie YouTube-Videos mit Python
Unterschied zwischen @classmethod und @staticmethod in Python