1 Pluspunkt 0 Minuspunkte

Wenn ich zwei Elemente an eine Liste anhänge, wird das erste Element vom zweiten überschrieben

a = []
b = ['rot']
a.append(b)
b = ['gelb']
a.append(b)
print(b)

Ergebnis:

['gelb']

Wenn ich ein weiteres Element anhänge

b = ['blau']
a.append(b)
print(a)


dann enthält die Liste plötzlichalle 3 Elemente.

[['rot'], ['gelb'], ['blau']]

Wieso ändern sich die Liste beim 2 Element?

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte
Wenn du ein Objekt einer Liste hinzufügst, fügt die Liste tatsächlich einen Verweis auf dieses Objekt hinzu, nicht das Objekt selbst. Das bedeutet, dass Änderungen am ursprünglichen Objekt sich in der Liste widerspiegeln werden, da die Liste auf denselben Verweis verweist.

a = []: Du erstellst eine leere Liste a.     

b = ['rot']: Du erstellst eine Liste b mit einem Element 'rot'.     

a.append(b): Du fügst eine Referenz auf die Liste b zur Liste a hinzu.     

b = ['gelb']: Du erstellst eine neue Liste b mit einem Element 'gelb'. Dies ändert den Verweis von b, hat jedoch keine Auswirkungen auf das bereits in a hinzugefügte Element, da a auf die ursprüngliche Liste b verweist, nicht auf b selbst.     

a.append(b): Du fügst eine Referenz auf die neue Liste b ('gelb') zur Liste a hinzu. Jetzt enthält a zwei Referenzen, beide auf verschiedene Listen.  Wenn du nun print(b) aufrufst, wird die aktuelle Liste b ('gelb') angezeigt.      

b = ['blau']: Du erstellst eine weitere neue Liste b mit einem Element 'blau'. Wieder ändert dies den Verweis von b, hat jedoch keine Auswirkungen auf die Listen, die bereits in a enthalten sind.      

a.append(b): Du fügst eine Referenz auf die neueste Liste b ('blau') zur Liste a hinzu. Jetzt enthält a drei Referenzen, jeweils auf verschiedene Listen.  Wenn du nun print(a) aufrufst, werden alle drei Listen angezeigt, auf die a verweist: [['rot'], ['gelb'], ['blau']].
von