Die folgende Klasse erstellt eine Liste und verwendet dann die Methode move_pieces, um die Reihenfolge der letzten beiden Elemente zu ändern und eine neue Liste zurückzugeben. Irgendwie, wenn ich den folgenden Code ausführe, gibt die Methode keine neue Liste zurück, sondern speichert über den self.state und die 'test' Liste, die ich erstellt habe, um den Code auszuführen. Irgendwelche Gedanken?Variablen, die zurückgesetzt werden
class node:
def __init__(self, state):
self.state = state
def move_piece(self):
new_node = self.state
new_node[7] , new_node[8] = new_node[8] , new_node[7]
return new_node
test = [1,3,4,8,6,2,7,0,5]
test_node = node(test)
test_node.move_piece()
Das ist eine Menge von Code recht ist .... Sie können Kochen Sie es auf ein einfaches Beispiel? Wenn Sie jedoch die ursprüngliche Liste nicht ändern möchten, kopieren Sie einfach die Liste und ändern Sie die Kopie. – tdelaney
In der Tat viel Code und ich bin mir nicht ganz sicher, was die Methode tun soll und was die erwartete Ausgabe ist. Auf den ersten Blick würde ich denken, dass 'zero_idx' und' item_idx' geschaltet werden (Zeile 82, 83)? – ppasler
Sorry Leute. Neu im Stackoverflow. Die move_piece-Methode sollte self.state (eine Liste) nehmen und eine andere Liste zurückgeben (self.state reordered). Aber wenn ich die Methode verwende, wird der Wert von self.state geändert, anstatt nur eine neue Liste zurückzugeben und self.state gleich zu halten. – priorfire4411