897 Stimmen

Wie definiert man ein zweidimensionales Array?

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

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

15voto

innov8 Punkte 1799

Verwendung:

matrix = [[0]*5 for i in range(5)]

Der *5 für die erste Dimension funktioniert, weil die Daten auf dieser Ebene unveränderlich sind.

7 Stimmen

Ich würde das wahrscheinlich so schreiben matrix = [[0]*cols for _ in range(rows)]

14voto

Eine Neufassung zum leichteren Lesen:

# 2D array/ matrix

# 5 rows, 5 cols
rows_count = 5
cols_count = 5

# create
#     creation looks reverse
#     create an array of "cols_count" cols, for each of the "rows_count" rows
#        all elements are initialized to 0
two_d_array = [[0 for j in range(cols_count)] for i in range(rows_count)]

# index is from 0 to 4
#     for both rows & cols
#     since 5 rows, 5 cols

# use
two_d_array[0][0] = 1
print two_d_array[0][0]  # prints 1   # 1st row, 1st col (top-left element of matrix)

two_d_array[1][0] = 2
print two_d_array[1][0]  # prints 2   # 2nd row, 1st col

two_d_array[1][4] = 3
print two_d_array[1][4]  # prints 3   # 2nd row, last col

two_d_array[4][4] = 4
print two_d_array[4][4]  # prints 4   # last row, last col (right, bottom element of matrix)

14voto

khaz Punkte 302

Um eine Matrix aus Nullen (Einsen) zu deklarieren:

numpy.zeros((x, y))

z.B..

>>> numpy.zeros((3, 5))
    array([[ 0.,  0.,  0.,  0.,  0.],
   [ 0.,  0.,  0.,  0.,  0.],
   [ 0.,  0.,  0.,  0.,  0.]])

oder numpy.ones((x, y)) z.B.

>>> np.ones((3, 5))
array([[ 1.,  1.,  1.,  1.,  1.],
   [ 1.,  1.,  1.,  1.,  1.],
   [ 1.,  1.,  1.,  1.,  1.]])

Sogar drei Dimensionen sind möglich. ( http://www.astro.ufl.edu/~warner/prog/python.html siehe --> Mehrdimensionale Arrays)

12voto

Meraj al Maksud Punkte 1430

Sie können eine leere zweidimensionale Liste erstellen, indem Sie zwei oder mehr eckige Klammern oder eine dritte Klammer verschachteln ( [] , getrennt durch ein Komma) mit einer eckigen Klammer, so wie unten:

Matrix = [[], []]

Nehmen wir nun an, Sie wollen 1 an Matrix[0][0] dann tippen Sie:

Matrix[0].append(1)

Geben Sie nun Matrix ein und drücken Sie die Eingabetaste. Die Ausgabe wird sein:

[[1], []]

Wenn Sie stattdessen die folgende Anweisung eingeben

Matrix[1].append(1)

dann würde die Matrix lauten

[[], [1]]

11voto

user110954 Punkte 711

Ich arbeite gerade an meinem ersten Python-Skript, und das Beispiel mit der quadratischen Matrix hat mich ein wenig verwirrt. Ich hoffe, das folgende Beispiel hilft Ihnen, etwas Zeit zu sparen:

 # Creates a 2 x 5 matrix
 Matrix = [[0 for y in xrange(5)] for x in xrange(2)]

so dass

Matrix[1][4] = 2 # Valid
Matrix[4][1] = 3 # IndexError: list index out of range

CodeJaeger.com

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.

Powered by:

X