Heim > Artikel > Backend-Entwicklung > Was ist der Unterschied zwischen „list.__iadd__“ und „list.__add__“ und warum führt er zu unterschiedlichen Ergebnissen beim Ändern von Listen in Python?
Die Unterschiede zwischen list.__iadd__ und list.__add__ verstehen
In Python können Objekte spezielle „magische“ Methoden definieren, um ihre Interaktion zu unterstützen mit bestimmten Betreibern. Zwei dieser Methoden sind iadd und __add__, die für direkte bzw. reguläre Additionsvorgänge verwendet werden.
Bedenken Sie die folgenden zwei Codeausschnitte:
<code class="python"># Example 1 x = y = [1, 2, 3, 4] x += [4] print(x) # [1, 2, 3, 4, 4] print(y) # [1, 2, 3, 4, 4] # Example 2 x = y = [1, 2, 3, 4] x = x + [4] print(x) # [1, 2, 3, 4, 4] print(y) # [1, 2, 3, 4]</code>
Warum? Verhalten sich diese beiden Beispiele unterschiedlich?
In beiden Fällen beginnen wir mit zwei identischen Listen, x und y, und führen eine Additionsoperation mit entweder x = [4] oder x = x [4] durch.
Bei Verwendung von x = [4] wird die __iadd__-Methode von Python aufgerufen, die eine In-Place-Addition durchführt. Dies bedeutet, dass die ursprüngliche Liste x verändert wird und ihr Inhalt mit den Elementen in der Liste aktualisiert wird [4]. Infolgedessen enthalten sowohl x als auch y jetzt dieselbe geänderte Liste.
Im Gegensatz dazu wird bei Verwendung von x = x [4] die __add__-Methode von Python aufgerufen, die eine neue Liste zurückgibt, die die Elemente von beiden x enthält und [4]. Die ursprüngliche Liste x bleibt unverändert und y verweist weiterhin auf die ursprüngliche unveränderte Liste.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „list.__iadd__“ und „list.__add__“ und warum führt er zu unterschiedlichen Ergebnissen beim Ändern von Listen in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!