On 2024-08-07 09:57, Patrick Rudin <taxi_bs@gmx.ch> wrote:
Mike Müller wrote:
nummern = [[5,5,5]] nummern.append([9,9,9])
for a,b,c in nummern: print('vorher: ', id(b)) b += c print('nachher:', id(b))
Ausgabe:
vorher: 4375044856 nachher: 4375045016 vorher: 4375044984 nachher: 4375045272
Das hilft aber nicht weiter, weil:
zahlen = [[5,5,5]] zahlen.append([9,9,9])
for t in zahlen: print('vorher: ', id(t[1])) t[1] += t[2] print('nachher:', id(t[1]))
vorher: 11743656 nachher: 11743816 vorher: 11743784 nachher: 11744072
Kurzum: Auch da wird ein neues Objekt erzeugt.
Ja, aber dieses neue Objekt weist Du dem richtigen Namen zu. Wenn wir von Deinem Code mal alles weglassen, was nur verwirrt, dann bleibt übrig: t = [5, 5, 5] t[1] = t[1] + t[2] bzw. t = [5, 5, 5] a = t[0] b = t[1] c = t[2] b = b + c Ich glaube, es sollte unmittelbar klar sein, dass im zweiten Fall t[1] noch auf das alte Objekt (mit dem Wert 5) zeigt und nicht auf das neue (mit dem Wert 10). Denn dieses wird ja an b zugewiesen, und nicht an t[1], wie im ersten Fall. hp