Am 06.08.24 um 22:57 schrieb Patrick Rudin über python-de:
Vermutlich habe ich irgendwas falsch verstanden, wie unpacking funktioniert.
Jedenfalls:
zahlen = [[5,5,5]]
zahlen.append([9,9,9])
for t in zahlen:
t[1] += t[2]
nummern = [[5,5,5]]
nummern.append([9,9,9])
for a,b,c in nummern:
b += c
Auf der Konsole dann abgefragt:
zahlen
Out[7]: [[5, 10, 5], [9, 18, 9]]
nummern
Out[8]: [[5, 5, 5], [9, 9, 9]]
Ich kapier das nicht. Funktioniert unpacking nur lesend? Oder wie kann ich
einen Wert während der For-Schlaufe ändern, ohne die umständliche Notation zu
verwenden?
Wie schon in den anderen Antworten ausführlich erklärt, ist ein Objekt mit dem
Datentyp `int` unveränderlich (immutable). Daher kann sich dessen Wert nicht
ändern. Der Name `b` lässt sicher aber für neue Objekte nutzen. Alle Objekte
haben eine für ihre gesamte Lebenszeit feste Kennung, eine ID. Die eingebaute
Funktion `id()` gibt diese zurück. Die Ausgabe der ID für `b` vor und nach der
Zuweisung mit `+=` macht deutlich, das ein neues Objekt entsteht, da `b` eine
neue ID bekommt:
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
Nach meiner Erfahrung ist so eine Anzeige von IDs eine gute Ergänzung zu
grundsätzlichen Erläuterungen zum Thema Objekte und deren Veränderbarkeit.
Viele Grüße
Mike
Grüsse
Patrick
_______________________________________________
python-de Mailingliste -- python-de@python.org
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an
python-de-le...@python.org
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: mmuel...@python-academy.de
_______________________________________________
python-de Mailingliste -- python-de@python.org
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an
python-de-le...@python.org
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: arch...@mail-archive.com