Heim  >  Artikel  >  Backend-Entwicklung  >  Warum wirkt sich das Ändern einer als Parameter in einer Funktion übergebenen Liste nicht auf die ursprüngliche Liste aus?

Warum wirkt sich das Ändern einer als Parameter in einer Funktion übergebenen Liste nicht auf die ursprüngliche Liste aus?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-27 01:12:03637Durchsuche

Why Does Modifying a List Passed as a Parameter in a Function Not Affect the Original List?

Ändern von Listen innerhalb von Funktionen

In der Programmierung ist es üblich, mit Listen zu arbeiten, insbesondere in Funktionen, die Daten manipulieren. Es tritt jedoch ein Problem auf, wenn versucht wird, Listen zu ändern, die als Parameter innerhalb einer Funktion übergeben werden.

Bedenken Sie den folgenden Codeausschnitt:

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

list1 = [0] * 5
function1(list1)

Sie können davon ausgehen, dass Liste1 nach dem Aufruf von Funktion1 geändert wird, aber es bleibt unverändert. Dies liegt daran, dass beim Zuweisen von etwas zur Variablen list_arg diese auf einen neuen Wert verweist. Die ursprüngliche Liste ist jedoch nicht betroffen.

Um dies zu umgehen, können Sie stattdessen die Elemente der ursprünglichen Liste ändern:

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

Mit list_arg[:] werden effektiv alle Elemente von ersetzt die Originalliste. Es ist jedoch erwähnenswert, dass direkte Änderungen wie diese verwirrend sein können und möglicherweise nicht immer der beste Ansatz sind.

Das obige ist der detaillierte Inhalt vonWarum wirkt sich das Ändern einer als Parameter in einer Funktion übergebenen Liste nicht auf die ursprüngliche Liste aus?. 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