Heim > Artikel > Backend-Entwicklung > Warum ändert „list.__iadd__“ sowohl die ursprüngliche als auch die zugewiesene Liste, während „list.__add__“ nur die zugewiesene Liste ändert?
Verhaltensdiskrepanz zwischen list.__iadd__ und list.__add__
Bedenken Sie den folgenden Ausschnitt:
<code class="python">x = y = [1, 2, 3, 4] x += [4] print(x) # Outputs: [1, 2, 3, 4, 4] print(y) # Outputs: [1, 2, 3, 4, 4]</code>
Im Gegensatz dazu , beachten Sie Folgendes:
<code class="python">x = y = [1, 2, 3, 4] x = x + [4] print(x) # Outputs: [1, 2, 3, 4, 4] print(y) # Outputs: [1, 2, 3, 4]</code>
Warum verhalten sich diese beiden Codeschnipsel unterschiedlich?
Erklärung
Der Hauptunterschied liegt in der Verwendung von " "-Operator. Im ersten Snippet:
x = [4] verwendet die __iadd__-Methode der Listenklasse, die:
Dies führt dazu, dass sowohl x als auch y geändert werden, um den Wert einzuschließen 4.
Im zweiten Snippet verwendet x = x [4] jedoch die __add__-Methode:
Daher hat x den Wert [1, 2 , 3, 4, 4], während y immer noch den ursprünglichen Wert [1, 2, 3, 4] behält.
Das obige ist der detaillierte Inhalt vonWarum ändert „list.__iadd__“ sowohl die ursprüngliche als auch die zugewiesene Liste, während „list.__add__“ nur die zugewiesene Liste ändert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!