Wie ändere ich eine Liste innerhalb einer Funktion in Python: Referenzübergabe oder direkte Änderung?

Patricia Arquette
Freigeben: 2024-10-27 06:12:03
Original
838 Leute haben es durchsucht

How to Modify a List Within a Function in Python: Pass by Reference or In-Place Modification?

Ändern einer Liste innerhalb einer Funktion

Beim Arbeiten mit Listenparametern in Funktionen verweisen die an die Funktion übergebenen Referenzen auf die ursprüngliche Liste. Alle Änderungen, die innerhalb der Funktion an der Variable list_arg vorgenommen werden, sind auf ihren lokalen Bereich beschränkt und wirken sich nicht auf die ursprüngliche Liste aus.

Um dieses Problem zu umgehen und die ursprüngliche Liste zu ändern, müssen der Liste Elemente direkt zugewiesen werden anstatt die gesamte Liste einem neuen Wert zuzuweisen. Hier ist ein Beispiel:

def function1(list_arg):
   a = function2()    # function2 returns an array of numbers
   list_arg[:] = list(a)

list1 = [0] * 5
function1(list1)
print(list1)  # [1, 2, 3, 4, 5]
Nach dem Login kopieren

In diesem modifizierten Code verwenden wir die Slice-Notation list_arg[:], um die Elemente von list(a) der ursprünglichen Liste zuzuweisen und so die Liste effektiv zu ändern.

Es ist wichtig zu beachten, dass direkte Änderungen zwar praktisch erscheinen, aber schwer verständlich sein können und bei Entwicklern, die den Code pflegen, zu Verwirrung führen können. Aus Gründen der Klarheit und Lesbarkeit werden im Allgemeinen explizite Neuzuweisungen bevorzugt.

Das obige ist der detaillierte Inhalt vonWie ändere ich eine Liste innerhalb einer Funktion in Python: Referenzübergabe oder direkte Änderung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage