Problem mit Listen --> einfach

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.
Gast

Problem mit Listen --> einfach

Beitragvon Gast » Samstag 21. Januar 2006, 18:02

grüße,

Code: Alles auswählen

container = []
row = []
for i in range(4):
    row.append('x')
for i in range(4):
    container.append(row)

container[0][0] = 'STEHT NICHT NUR AN 0.0'
container


Wie ließe sich das beheben? Ich hätte es gern so, dass ich exakt einen Slot mit neuem Inhalt belege. Und eben nicht die ersten slots von jeder reihe...
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Beitragvon modelnine » Samstag 21. Januar 2006, 18:26

Du belegst jedes einzelne Feld mit der selben Liste (also dem selben Listenobjekt, nämlih row, was Du nur einmal initialisierst).

Folgendes Beispiel macht eine neue Liste für jede Zeile:

Code: Alles auswählen

rows, cols = 10, 10
container = [['x']*cols for n in range(rows)]

# Erstes ist row, zweites column.
container[0][0] = "hello"
container[0][1] = "blah"
container[1][0] = "test"
print container


--- Heiko.
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Beitragvon Mad-Marty » Samstag 21. Januar 2006, 19:25

Wie modelnine schon erwähnt hat, nimmst du für alles die gleiche Liste.


Row enthält eine Referenz, und natürlich immer die gleiche.

Deswegen füllt sich auch alles, wenn du über eine der vielen Referenzen, die selbe Liste änderst.
Gast

danke

Beitragvon Gast » Sonntag 22. Januar 2006, 10:00

vielen dank, klappt wunderbar. :)

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]