„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie ändere ich eine Liste innerhalb einer Funktion in Python: Referenzübergabe oder direkte Änderung?

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

Veröffentlicht am 08.11.2024
Durchsuche:521

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]

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

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

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3