Seite 1 von 1

Bearbeiten einer verschachtelten Liste

Verfasst: Sonntag 20. Januar 2019, 21:03
von FroxGame
Hallo liebe Forumnutzer,
ich habe ein Problem mit verschachtelten Listen. Ich bekomme es einfach nicht hin, ein Element aus einer einzelnen Liste in der Liste zu bearbeiten. Ich habe schon im Internet gesucht und so gemacht, wie es da stand, aber es ging nicht.

Code: Alles auswählen

bretthoehe = 4
brettbreite = 4
count, value = 0,0
brett = [[0,1,0,1],[0,-1,0,-1],[1,1,1,1],[-1,-1,-1,-1]]
drawboard = [[" "]*brettbreite]*bretthoehe

for value in range(bretthoehe):
    for count in range(brettbreite):
        if brett[count][value] == 1:
            drawboard[count][value]="X"
        if brett[count][value] == -1:
            drawboard[count][value]="O"

print(drawboard)
Der Output ist dann folgender:

Code: Alles auswählen

[['O', 'O', 'O', 'O'],['O', 'O', 'O', 'O'],['O', 'O', 'O', 'O'],['O', 'O', 'O', 'O']]

Mein gewünschter Output ist aber folgender:

Code: Alles auswählen

[[' ','X',' ','X'],[' ','O',' ','O'],['X','X','X','X'],['O','O','O','O']]
Das liegt daran, dass die Elemente falsch verändert werden. Wenn ich das auch normal machen möchte, mit nur einer Änderung in einer Liste, dann ändert sich der Wert in jeder Liste, das ist halt das Problem. Kann mir da irgendjemand helfen? Danke im Vorraus.
P.S. Ich benutze Python auf Version 3.6 , falls das wichtig ist.

Re: Bearbeiten einer verschachtelten Liste

Verfasst: Sonntag 20. Januar 2019, 21:10
von ThomasL
versuchs mal so

Code: Alles auswählen

drawboard = [[" " for _ in range(brettbreite)] for _ in range(bretthoehe)]

Re: Bearbeiten einer verschachtelten Liste

Verfasst: Sonntag 20. Januar 2019, 21:33
von FroxGame
@ThomasL , dein Beitrag hat mir sehr geholfen. Vielen Dank!

Re: Bearbeiten einer verschachtelten Liste

Verfasst: Sonntag 20. Januar 2019, 21:41
von Sirius3
@FroxGame: mit Liste * Zahl erzeugst Du eine neue Liste, wo die selben Elemente n-mal in der Liste vorkommen. Also Deine Liste mit 4 Leerzeichenstrings ist vier mal in der Liste. Statt dessen willst Du aber 4 eigentständige Listen.

Statt aber Listen zu ändern, erzeugt man in Python neue Listen:

Code: Alles auswählen

SYMBOLS = {-1: "X", 1: "O", 0:" "}

brett = [[0,1,0,1],[0,-1,0,-1],[1,1,1,1],[-1,-1,-1,-1]]
draw_board = []
for row in brett:
    draw_row = []
    for cell in row:
        draw_row.append(SYMBOLS[cell])
    draw_board.append(draw_row)
print(drawboard)
oder als Listcomprehension

Code: Alles auswählen

draw_board = [
    [SYMBOLS[cell] for cell in row]
    for row in brett
]

Re: Bearbeiten einer verschachtelten Liste

Verfasst: Dienstag 22. Januar 2019, 22:02
von FroxGame
Vielen Dank Sirius3,
dass Du mich aufgeklärt hast und mir auch noch zusätzlich einige Zeilen Code erspart hast.