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

6voto

Harsh Sharma Punkte 10292
l=[[0]*(L) for _ in range(W)]

Wird schneller sein als:

l = [[0 for x in range(L)] for y in range(W)]

3 Stimmen

Doppelte Antwort auf eine bereits unten beantwortete Frage. Auch [[0]*(L) for i in range(W)] sollte sein [[0]*(L) for _ in range(W)] seit i wird nirgends verwendet

5voto

Nagendra Nigade Punkte 816

Wenn Sie vor dem Start keine Größenangaben haben, erstellen Sie zwei eindimensionale Listen.

list 1: To store rows
list 2: Actual two-dimensional matrix

Die gesamte Zeile in der 1. Liste speichern. Sobald dies geschehen ist, hängen Sie Liste 1 an Liste 2 an:

from random import randint

coordinates=[]
temp=[]
points=int(raw_input("Enter No Of Coordinates >"))
for i in range(0,points):
    randomx=randint(0,1000)
    randomy=randint(0,1000)
    temp=[]
    temp.append(randomx)
    temp.append(randomy)
    coordinates.append(temp)

print coordinates

Ausgabe:

Enter No Of Coordinates >4
[[522, 96], [378, 276], [349, 741], [238, 439]]

4voto

Mit Hilfe der Liste :

matrix_in_python  = [['Roy',80,75,85,90,95],['John',75,80,75,85,100],['Dave',80,80,80,90,95]]

mit Hilfe von dict: Sie können diese Informationen auch in einer Hash-Tabelle speichern, um schnell suchen zu können.

matrix = { '1':[0,0] , '2':[0,1],'3':[0,2],'4' : [1,0],'5':[1,1],'6':[1,2],'7':[2,0],'8':[2,1],'9':[2,2]};

matrix['1'] liefert Ihnen das Ergebnis in O(1) Zeit

*nb : Sie müssen mit einer Kollision in der Hash-Tabelle umgehen

2voto

和風信使 Punkte 135
# Creates a list containing 5 lists initialized to 0
Matrix = [[0]*5]*5

Seien Sie vorsichtig mit diesem kurzen Ausdruck, siehe die vollständige Erklärung unten in der Antwort von @F.J.

21 Stimmen

Seien Sie auf diese Weise vorsichtig, denn Matrix[0], Matrix[1], ..., Matrix[4] zeigen alle auf das gleiche Array, so dass nach Matrix[0][0] = 3 würden Sie erwarten Matrix[0][0] == Matrix[1][0] == ... == Matrix[4][0] == 3 .

1 Stimmen

Danke gongzhitaao für deinen Kommentar. Hätte ich ihn früher gelesen, hätte ich mindestens eine halbe Stunde gespart. Eine Matrix zu haben, bei der jede Zeile auf dieselbe Stelle im Speicher verweist, scheint nicht sehr nützlich zu sein, und wenn man sich nicht bewusst ist, was man tut, ist es sogar gefährlich! Ich bin mir ziemlich sicher, dass dies NICHT das ist, was Masoud Abasian, der die Frage gestellt hat, tun will.

7 Stimmen

Sie sollten diese Antwort streichen, da sie nicht korrekt ist. Anfänger könnten verwirrt sein.

2voto

Chandra Shekhar Punkte 553

Hier ist der Codeschnipsel für die Erstellung einer Matrix in Python:

# get the input rows and cols
rows = int(input("rows : "))
cols = int(input("Cols : "))

# initialize the list
l=[[0]*cols for i in range(rows)]

# fill some random values in it
for i in range(0,rows):
    for j in range(0,cols):
        l[i][j] = i+j

# print the list
for i in range(0,rows):
    print()
    for j in range(0,cols):
        print(l[i][j],end=" ")

Bitte schlagen Sie vor, wenn ich etwas übersehen habe.

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