[Python-de] Re: for unpacking
Mike Müller <mmueller-Nw5JoyH4ZXncp1/[email protected]> Wed, 7 Aug 2024 09:14:16 +0200
| Newsgroups | gmane.comp.python.general.german |
|---|---|
| Organization | Python Academy GmbH & Co. KG |
| Message-ID | <[email protected]> |
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 -- [email protected]
> Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an
> [email protected]
> https://mail.python.org/mailman3/lists/python-de.python.org/
> Mitgliedsadresse: [email protected]
_______________________________________________
python-de Mailingliste -- [email protected]
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an [email protected]
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: [email protected]