Nested list assignments

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Randomtheories
User
Beiträge: 2
Registriert: Freitag 11. März 2011, 10:25

Hallo zusammen,

bin jetzt seit Stunden am Grübeln und recherchieren, warum das nicht klappt wie ich will und ich werde bald wahnsinnig. Erklärungen zu meinem Problem finde ich auch nicht. Ich benutze Python 2.6.
Also hier mein Problem:
line = [20 * ['o']]
someGrid = 20 * line
Jetzt habe ich eine Liste bestehend aus Listen und möchte gerne mit einem Index die 'line' auswählen und mit einem zweiten Index das jeweilige Listenelement. Ungefähr so:
someGrid[3][2] = 'x'
print someGrid
Problem ist, dass er mir dadurch eine ganze Spalte umschreibt. Ich verstehe nicht ganz, wie das Konstrukt someGrid[3][2] wirkt und wie ich ein einzelnes Listenelement in einer nested list ansprechen kann. Wenn jemand weiterführende Erklärungen hat, bin ich wirklich sehr dankbar.

LG
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Also zunächst einmal ist der Code für die Erzeugung bei Dir sicherlich nicht so, wie gewünscht.

Dein Problem ist aber die Tatsache, dass Du keine neuen Objekte erzeugst, sondern 20 mal dasselbe (Listen)-Objekt in eine Liste packst:

Code: Alles auswählen

In [20]: line = ['o'] * 20

In [21]: someGrid = [line] * 20

In [22]: someGrid[0] is someGrid[1]
Out[22]: True
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten