Ich möchte ein zweidimensionales Array ohne eine initialisierte Länge wie folgt definieren:
Matrix = [][]
Dies führt jedoch zu einem Fehler:
IndexError: Listenindex außerhalb des Bereichs
Ich möchte ein zweidimensionales Array ohne eine initialisierte Länge wie folgt definieren:
Matrix = [][]
Dies führt jedoch zu einem Fehler:
IndexError: Listenindex außerhalb des Bereichs
Wenn Sie in der Lage sein wollen, es als 2D-Array zu denken, anstatt gezwungen zu sein, in Form einer Liste von Listen zu denken (was meiner Meinung nach viel natürlicher ist), können Sie Folgendes tun:
import numpy
Nx=3; Ny=4
my2Dlist= numpy.zeros((Nx,Ny)).tolist()
Das Ergebnis ist eine Liste (kein NumPy-Array), und Sie können die einzelnen Positionen mit Zahlen, Zeichenketten oder anderem überschreiben.
Verwendung:
import copy
def ndlist(*args, init=0):
dp = init
for x in reversed(args):
dp = [copy.deepcopy(dp) for _ in range(x)]
return dp
l = ndlist(1,2,3,4) # 4 dimensional list initialized with 0's
l[0][1][2][3] = 1
Ich denke, NumPy ist der Weg zu gehen. Die oben ist eine generische, wenn Sie nicht wollen, NumPy zu verwenden.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
18 Stimmen
Man muss nicht Arrays definieren oder irgendetwas anderes. Sie können jedoch mehrdimensionale Sequenzen erstellen, wie die Antworten hier zeigen. Denken Sie daran, dass Python Variablen sind untypisiert, aber Werte sind stark typisiert.
2 Stimmen
Ich bin verwirrt. Von anderen Sprachen kommend: es IST ein Unterschied zwischen einem 1D-Array, das 1D-Arrays enthält und einem 2D-Array. Und AFAIK gibt es keine Möglichkeit, ein mehrdimensionales Array (oder Liste) in Python zu haben. Sollte hier gesagt werden...
4 Stimmen
Siehe auch die Python3-FAQ auf Wie kann ich eine mehrdimensionale Liste erstellen?