2017-11-18 2 views
0

im Versuch, eine Warteschlange in Python zu implementieren, aktualisiert ENQUEUE die Warteschlange aber im comfused, warum DEQUEUE gewohnt aktualisieren Sie die WarteschlangePython Queue Implementierung

def enQueue(toDo,myQueue): 
    myQueue += [toDo] 
    return myQueue 

def deQueue(myQueue): 
    if myQueue != []: 
     return myQueue[1:] 

def makeQueue(): 
    return[] 


def main() 

    football = event("10-10-2019","12:00","pitch") 
    enQueue(football, getdone) 
    print(getdone) 
    deQueue(getdone) 
    print(getdone) 

beide print-Anweisungen geben die gleiche Ausgabe

+0

Können Sie zeigen, wie Sie diese Funktionen in Ihrem Code verwenden? – Gnudiff

+0

gerade aktualisiert es jetzt. – eire

Antwort

0

Da myQueue += [toDo] wird vor Ort durchgeführt, bleibt der Effekt dieser Operation nach dem Funktionsaufruf erhalten.

deQueue führt es nicht an Ort und Stelle, also nachdem der Anruf getätigt wurde, wurde die queue, die Sie als Liste darstellen, nicht aktualisiert.


Sie müssen eine Entscheidung treffen, wenn Sie Ihre Funktionen wollen die Warteschlange, die Sie an Ort und Stelle passieren ändern oder wenn sie einen neuen zurück.

Wenn Sie eine in-Place-Ansatz möchten, verwenden Sie append und pop(0) und zurück None (Anmerkung jedoch, dass pop(0) O (n) ist, wenn Sie die Queue mit einer Liste darstellen).

Im gegenüberliegenden Lager, fügen Sie einfach die Liste oder schneiden Sie es und weisen Sie den Rückgabewert an einen anderen Namen.

+0

Wie kann ich deQueue an Ort und Stelle durchführen lassen? – eire

+0

Die Codes Teil ein Projekt mit Imperative Stil, so kann ich append verwenden – eire

+0

@eire Sie nicht "Return Queue" in beiden Fällen, da Sie das Ergebnis sowieso verwerfen. Sie ändern es an Ort und Stelle mit myqueue.pop (0) – Gnudiff

Verwandte Themen