Heim  >  Artikel  >  Backend-Entwicklung  >  Wie ändere ich eine Liste innerhalb einer Funktion in Python: Neuzuweisung vs. Elementänderung?

Wie ändere ich eine Liste innerhalb einer Funktion in Python: Neuzuweisung vs. Elementänderung?

DDD
DDDOriginal
2024-10-28 21:03:30203Durchsuche

How to Modify a List Within a Function in Python: Reassignment vs. Element Modification?

Ä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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn