Seite 1 von 1
Problem mit Listen --> einfach
Verfasst: Samstag 21. Januar 2006, 18:02
von Gast
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...
Verfasst: Samstag 21. Januar 2006, 18:26
von modelnine
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.
Verfasst: Samstag 21. Januar 2006, 19:25
von Mad-Marty
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.
danke
Verfasst: Sonntag 22. Januar 2006, 10:00
von Gast
vielen dank, klappt wunderbar.
