Ändern einer Liste innerhalb einer Funktion
Beim Arbeiten mit Listen innerhalb von Funktionen ist es wichtig, das Konzept von Referenzen und Wertzuweisungen zu verstehen. In Python erhalten an Funktionen übergebene Listenparameter einen Verweis auf die Originalliste, keine Kopie. Durch Ändern der Liste innerhalb der Funktion wird die ursprüngliche Liste direkt geändert.
Problemdarstellung
Betrachten Sie den folgenden Code:
<code class="python">def function1(list_arg): a = function2() # returns an array of numbers list_arg = list(a) # Assign a new list to list_arg list1 = [0] * 5 function1(list1) print(list1) # Output: [0, 0, 0, 0, 0]</code>
In diesem Beispiel Wir wollten die übergebene Liste list1 mit den Elementen des Arrays a modifizieren. Der Code funktioniert jedoch nicht, da wir in der Zeile list_arg = list(a) list_arg eine neue Liste zuweisen, wodurch die Verknüpfung zu list1 effektiv unterbrochen wird.
Lösung: Ändern Listenelemente
Um die ursprüngliche Liste korrekt zu ändern, müssen wir die neuen Elemente ihren einzelnen Elementen zuweisen, anstatt die gesamte Liste neu zuzuweisen. Dies kann durch Slicing erreicht werden:
<code class="python">list_arg[:] = list(a)</code>
Dadurch wird der Inhalt von list(a) allen Elementen in list_arg zugewiesen. Das Slicing [:] wählt den gesamten Bereich der Elemente in list_arg aus.
Fazit
Bedenken Sie bei der Arbeit mit Listen in Funktionen, dass die Neuzuweisung die vorhandene Liste ersetzt, während sie geändert wird elements behält die ursprüngliche Liste bei. Verwenden Sie Slicing, um Elemente innerhalb einer Liste zu ändern und sicherzustellen, dass die ursprüngliche Liste intakt bleibt.
Das obige ist der detaillierte Inhalt vonWie ändere ich eine Liste innerhalb einer Funktion in Python: Neuzuweisung vs. Elementänderung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!