[Python-de] Re: for unpacking
[email protected] (Stefan Ram) 6 Aug 2024 21:35:30 GMT
| Newsgroups | gmane.comp.python.general.german |
|---|---|
| Organization | Stefan Ram |
| Message-ID | <[email protected]> |
Patrick Rudin <[email protected]> schrieb oder zitierte: >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] t wird hier beim ersten Durchlauf an [5,5,5] gebunden, so daß t[1]+=t[2] dann die mittlere 5 zu 10 verändert. Eine Zuweisung der Form Name[ ... ]= ... ändert die Bindung einer Komponente der Liste "Name" (wenn "Name" an eine Liste gebunden wurde). Hier war dieses sogenannte "Ziel" der Zuweisung die Stelle in der Mitte der Liste [5,5,5]. >nummern = [[5,5,5]] >nummern.append([9,9,9]) >for a,b,c in nummern: > b += c Hier wurde b beim ersten Schleifendurchlauf zunächst an den Wert 5 gebunden. Die Zuweisung "b += c" bindet den Namen "b" nun an die Summe von b und c, aber ändert nichts an der Liste [5,5,5]. Eine Zuweisung der Form Name = ... kann nie etwas an einer Liste ändern, sondern ändert immer nur die Bindung des Namens "Name". >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? Technisch gesehen kann man Werte gar nicht verändern (2 ist immer 2 [1]), sondern nur Ziele an Werte binden. Ein Ziel kann eine Stelle in einer Liste sein, dann nimmt man Name[ ... ]= ... oder ein Name, dann nimmt man Name = ... . (Siehe auch: "7.2 Assignment statements" in "The Python Language Reference Release 3.13.0a0"). 1 In einigen Python-Implementationen kann man es durch einen Trick erreichen, daß "print( 2 )" zur Ausgabe von "3" führt, aber das ist wohl nicht portabel und würde bei normaler Programmierung nicht verwendet werden. _______________________________________________ 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]