Hallo
Ich habe folgendes Problem.
Ich kenne Java und möchte gerne Python kennenlernen.
Wenn ich in Java ein Array initialisiere kann ich das ja so machen:
int[][] array = new int[8][8] oder so ähnlich
in Python hab ich irgendwo aufgeschnappt kann man das mit einer Liste so machen:
array = [[0] * 8] * 8
nun ist mir aber aufgefallen, dass die einzelnen Reihen abhängig voneinander sind.
zb array[0][1] = 1
weist auch array[1][1] den Wert eins zu
und auch array[2][1] ... usw
also kann mir Jemand nen Tip geben wie die Liste initialisieren kann ohne die Abhängigkeit
Anfänger braucht Hilfe:Listen initialisieren
Wie wäre es damit:
Das was du erzeugst ist kein zweidimensionales array, sondern 8 mal das gleiche eindimensionale array. Deshalb die "Abhängigkeit".
Code: Alles auswählen
array = [[0 for i in xrange(8)] for i in xrange(8)]
Die innere "list comprehension" kann man weglassen und statt dessen die Multiplikation verwenden. Das erzeugt zwar Referenzen auf die selbe 0, aber da `int`-Ojekte unveränderbar sind, macht das nichts:
Code: Alles auswählen
In [368]: a = [[0] * 8 for dummy in xrange(8)]
In [369]: a[2][3] = 42
In [370]: a
Out[370]:
[[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 42, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0]]
Code: Alles auswählen
a = [[0]*8]*8
ich verstehe...
hatte leider nicht richtig gelesen...