Ich habe die Warteschlange in Python geschrieben

Guten Abend Erhalten Sie weiterhin verschiedene Ratschläge von allen Zwei Wochen vergehen.

Ich danke dir sehr. m (_ _) m

Bereiten Sie zunächst einen Stapel vor, ändern Sie ihn und stellen Sie ihn in die Warteschlange Ich werde einen Ansatz wählen.

stack.py


class Stack:
    class full(Exception):
        pass
    def __init__(self,size):
        #Körper stapeln
        self.str = []
        #Geben Sie die Anzahl der Daten an, die gestapelt werden können
        self.size = size
    def push(self,value):
        #Körper stapeln>Ausnahmebehandlung für die angegebene Anzahl von Daten
        if len(self.str) >= self.size:
            raise Stack.full
        #Drücken Sie, wenn es kein Problem gibt
        self.str.append(value)
    def pop(self):
        print(self.str.pop())
    def view(self):
        print(self.str)

x = int(input("stack size is "))
test = Stack(x)  
    
while True:
    num = int(input("1.push 2.pop: "))

    if num == 1:
        x = int(input("push data is "))
        try:#Normale Verarbeitung
            test.push(x)
            test.view()
        except:#Ausnahmebehandlung
            print("Full!")
    elif num == 2:
        try:#Normale Verarbeitung
            test.pop()
            test.view()
        except:#Ausnahmebehandlung
            print("Empty!")
    else:
        break

Nein, es ist eine Beschreibung, an die ich vor zwei Wochen nicht denken konnte (; ´ ・ ω ・) Wie bringen Sie es von hier aus in die Warteschlange? Was war überhaupt der Unterschied zwischen einem Stapel und einer Warteschlange? .. Grundsätzlich ist die Bewegung des Pop anders. 図1.PNG Wie in der Abbildung gezeigt, werden im Fall einer Warteschlange die zuerst gespeicherten Daten herausgenommen. Wenn Sie zufällig pushen / popen, wird der Inhalt durcheinander gebracht Ich weiß nicht, wo die ersten Daten sind.

Als Gegenmaßnahme gibt es die Idee des Ringpuffers. Die Warteschlange wird realisiert, indem verwaltet wird, wo sich die erste befindet. .. .. Ich benutze Python Ist es nicht einfach ?? ??

Lassen Sie uns zunächst die Natur des Pops untersuchen.

test.py


num = [3,2,1]

for i in range(3):
    print(f"num[{i}] = {num[i]}")

##Ausführungsergebnis##
#num[0] = 3#
#num[1] = 2#
#num[2] = 1#
############

Lassen Sie uns Pop in setzen. Ich möchte mich anstellen, also setze ich es auf pop (0). Lassen Sie uns die ersten Daten abrufen.

test.py


num = [3,2,1]
num.pop(0)
for i in range(2):
    print(f"num[{i}] = {num[i]}")

##Ausführungsergebnis##
#num[0] = 2#
#num[1] = 1#
############

[Wand] * ゚) Hmm? Pop die erste Zahl [0], das heißt, nehmen Sie es heraus, Infolge des Löschens sind die verbleibenden Elemente linksbündig.

Das ist richtig, die Elemente, die nach dem Löschen des Anfangs verbleiben, sind Es wird auch von 0 neu angeordnet. Was ist, wenn Sie es selbst tun, brauchen Sie keinen Ringpuffer !?

Die Warteschlange ist im Grunde die gleiche wie der Stapel, der Daten abruft. Sie müssen nur einmal pro Adresse schreiben. Daher definiert pop () im obigen Stapel die Beschreibung, die vom Ende extrahiert werden muss Wenn Sie zu pop (0) wechseln, der Beschreibung, die immer von Anfang an herausgenommen wird, handelt es sich um eine Warteschlange.

Queue??.py


class Stack:
    class full(Exception):
        pass
    def __init__(self,size):
        self.str = []
        self.size = size
    def push(self,value):
        if len(self.str) >= self.size:
            raise Stack.full
        self.str.append(value)
    def pop(self):
        print(self.str.pop(0)) #Nur hier ändern!!Vorher ändern) pop()Nach der veränderung) pop(0)
    def view(self):
        print(self.str)

x = int(input("stack size is "))
test = Stack(x)  
    
while True:
    num = int(input("1.push 2.pop: "))

    if num == 1:
        x = int(input("push data is "))
        try:
            test.push(x)
            test.view()
        except:
            print("Full!")
    elif num == 2:
        try:
            test.pop()
            test.view()
        except:
            print("Empty!")
    else:
        break

Unten sind die Ausführungsergebnisse.

push data is 4 #Drücken Sie 4
[1, 2, 3, 4]   #Speicherinhalt nach Push

1.push 2.pop: 2#2.POP wählen
1              #str[0]1 in Pop gespeichert
[2, 3, 4]      #Speicherinhalt nach Pop

1.push 2.pop: 2#2.POP wählen
2              #str[0]1 in Pop gespeichert
[3, 4]         #Speicherinhalt nach Pop

1.push 2.pop: 2
3
[4]

1.push 2.pop: 2
4
[]

1.push 2.pop: 2
Empty!

Mit dieser Art von Gefühl konnte ich das Stichwort mit Leichtigkeit erkennen. Hmmm, aber mache einen Linkpuffer richtig und erkläre Ich finde, es ist besser für mich, es anzuziehen. Okay, lass es uns tun! !! Irgendwann mal. ..

Recommended Posts

Ich habe die Warteschlange in Python geschrieben
Ich habe den Stack in Python geschrieben
Ich habe Python auf Japanisch geschrieben
Ich habe Fizz Buzz in Python geschrieben
Schriftliche Auswahlsortierung in C.
[Python-Anfänger] Ich habe die Artikel gesammelt, die ich geschrieben habe
Ich habe den Gleitflügel in der Schöpfung geschrieben.
Verarbeitung in Python beenden
Ich habe den Code geschrieben, um den Brainf * ck-Code in Python zu schreiben
Ein Memo, das ich schnell in Python geschrieben habe
Ich habe die Methode der kleinsten Quadrate in Python ausprobiert
Geschrieben "Einführung in die Effektüberprüfung" in Python
Ich habe versucht, die inverse Gammafunktion in Python zu implementieren
Ich möchte den Fortschritt in Python anzeigen!
Finde Fehler in Python
Stapel und Warteschlange in Python
Ich verstehe Python auf Japanisch!
Was ich in Python gelernt habe
Ich habe die Python-Quelle heruntergeladen
Ich habe versucht, die Suche nach Breitenpriorität mit Python zu implementieren (Warteschlange, selbst erstelltes Zeichnen).
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Ich möchte R-Datensatz mit Python verwenden
Beachten Sie, dass ich den Algorithmus der kleinsten Quadrate verstehe. Und ich habe es in Python geschrieben.
Ich habe das in Google Cloud Dataflow vorinstallierte Python-Paket überprüft
Abrufen der arXiv-API in Python
Ich habe mich im Labyrinth verlaufen
Python im Browser: Brythons Empfehlung
Speichern Sie die Binärdatei in Python
Klicken Sie in Python auf die Sesami-API
Ich habe die grundlegende Grammatik von Python in Jupyter Lab geschrieben
Ich habe an der ISUCON10-Qualifikationsrunde teilgenommen!
Im Python-Befehl zeigt Python auf Python3.8
Implementieren Sie das Singleton-Muster in Python
Ich habe versucht, den Chi-Quadrat-Test in Python und Java zu programmieren.
Ich habe ein Skript zur automatischen Erstellung eines leeren Verzeichnisses in Python geschrieben
Ich habe Gray Scale mit Pytorch geschrieben
Ich habe es in der Sprache Go geschrieben, um das SOLID-Prinzip zu verstehen
Klicken Sie auf die Web-API in Python
Ich mochte den Tweet mit Python. ..
Ich habe gerade das Originalmaterial für den Python-Beispielcode geschrieben
Scikit-learn kann nicht in Python installiert werden
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
Berechnen Sie den Vormonat in Python
Untersuchen Sie die Klasse eines Objekts mit Python
Ich habe die Grundoperation von Numpy im Jupyter Lab geschrieben.
Holen Sie sich den Desktop-Pfad in Python
Holen Sie sich den Hostnamen in Python
Greifen Sie mit Python auf die Twitter-API zu
Ich habe Line Benachrichtigung in Python versucht
Der erste Schritt von Python Matplotlib
Ich habe ein Skript geschrieben, das das Bild in zwei Teile teilt
Beherrsche das schwache Ref-Modul in Python
Ich schrieb einen Test in "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren".
Ich habe die Berechnungszeit des in Python geschriebenen gleitenden Durchschnitts verglichen
Ich habe die Bewegung Python3 ausprobiert, die die Richtung im Koordinatensystem ändert
Ich habe einen AttributeError erhalten, als ich die offene Methode in Python verspottet habe