python: Wiederholung der Listenverarbeitung ändert die ursprüngliche Liste

8

Ich versuche, eine Liste rekursiv zu bearbeiten. Ich bin neu in Python, also als der ganze Code geschrieben und gesendet wurde, um ausgeführt zu werden, sah ich mich einem seltsamen Problem gegenüber: Die Liste kehrt nach dem Aufruf der rekursiven Funktion zurück. Um das zu testen, schrieb ich das:

%Vor%

Und nannte die Funktion:

%Vor%

Hier war das Ergebnis:

%Vor%

Was ich erwartet habe, war

%Vor%

, wie es für einfache Integer-Variablen gilt:

%Vor%

Wie kann ich die Situation beheben und was habe ich falsch verstanden?

    
Mihail 03.01.2013, 21:01
quelle

2 Antworten

9

Alle rekursiven Aufrufe Ihrer Funktion werden auf derselben Liste ausgeführt. Sie müssen eine Kopie erstellen:

%Vor%

Es gibt einige gute Erklärungen in den Antworten zu Wie? Ich gebe eine Variable als Referenz?

    
NPE 03.01.2013, 21:03
quelle
2

Wie in den anderen Antworten angegeben, mutieren Sie die Liste an Ort und Stelle. Sie können Kopien der Liste erstellen und / oder eine unveränderliche Datenstruktur wie ein Tupel verwenden:

%Vor%     
Jared 03.01.2013 21:08
quelle

Tags und Links