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
In Python werden Sie eine Liste von Listen erstellen. Sie müssen die Dimensionen nicht im Voraus deklarieren, aber Sie können es. Zum Beispiel:
matrix = []
matrix.append([])
matrix.append([])
matrix[0].append(2)
matrix[1].append(3)
Jetzt ist matrix[0][0] == 2 und matrix[1][0] == 3. Sie können auch die Syntax des Listenverständnisses verwenden. In diesem Beispiel wird sie zweimal verwendet, um eine "zweidimensionale Liste" zu erstellen:
from itertools import count, takewhile
matrix = [[i for i in takewhile(lambda j: j < (k+1) * 10, count(k*10))] for k in range(10)]
extend
wäre auch im ersten Fall hilfreich: Wenn Sie mit m = [[]]
dann könnten Sie die innere Liste ergänzen (eine Zeile erweitern) mit m[0].extend([1,2])
und ergänzen Sie die äußere Liste (fügen Sie eine neue Zeile an) mit m.append([3,4])
Diese Operationen würden Ihnen folgende Möglichkeiten bieten [[1, 2], [3, 4]]
.
rows = int(input())
cols = int(input())
matrix = []
for i in range(rows):
row = []
for j in range(cols):
row.append(0)
matrix.append(row)
print(matrix)
Warum ein so langer Code, und das auch noch in Python
fragen Sie?
Vor langer Zeit, als ich mich mit Python noch nicht auskannte, sah ich die einzeiligen Antworten zum Schreiben einer 2D-Matrix und sagte mir, dass ich nie wieder eine 2D-Matrix in Python verwenden werde. (Diese einzelnen Zeilen waren ziemlich beängstigend und gaben mir keine Informationen darüber, was Python tat. Beachten Sie auch, dass ich diese Abkürzungen nicht kenne).
Wie auch immer, hier ist der Code für einen Anfänger, der von C, CPP und Java Hintergrund kommt
Hinweis für Python-Liebhaber und Experten: Bitte stimmen Sie nicht ab, nur weil ich einen detaillierten Code geschrieben habe.
Sie sollten eine Liste von Listen erstellen, und das geht am besten mit verschachtelten Comprehensions:
>>> matrix = [[0 for i in range(5)] for j in range(5)]
>>> pprint.pprint(matrix)
[[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]]
Auf Ihrem [5][5]
Beispiel: Sie erstellen eine Liste mit einer Ganzzahl "5" und versuchen, auf das 5. Element zuzugreifen, was natürlich einen Indexfehler auslöst, da es kein 5. Element gibt:
>>> l = [5]
>>> l[5]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
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?