2016-10-10 5 views
2

Ich habe diese Matrix:in Python in einer Matrix Elemente hinzufügen

mat = [[ 0 for x in range(row)] for y in range(column)] 

Ich habe versucht, Elemente in die Matrix hinzuzufügen:

for x in range(row): # row is 2 
    for y in range(column): # column is 3 
     mat[x][y] = int(input("number: ")) 

aber die Schale gibt diesen Fehler zurück:

Traceback (most recent call last): 
File "C:\Users\Fr\Desktop\pr.py", line 13, in <module> 
mat[x][y] = 12 
IndexError: list assignment index out of range 

Wie füge ich Elemente zu einer Matrix hinzu?

+0

warum mit numpy nicht? – percusse

+3

Ich wollte ohne numpy –

Antwort

4

Die innere Liste sollte auf Säulen basieren:

In [73]: row = 3 
In [74]: column = 4 
In [78]: mat = [[ 0 for x in range(column)] for y in range(row)] 

In [79]: 

In [79]: for x in range(row): # row is 2 
      for y in range(column): # column is 3 
       mat[x][y] = 5 
    ....:   

In [80]: mat 
Out[80]: [[5, 5, 5, 5], [5, 5, 5, 5], [5, 5, 5, 5]] 
+0

Ich versuchte, habe den gleichen Fehler –

+0

@FrancescoRastelli Überprüfen Sie das Beispiel. – Kasramvd

+0

@FrancescoRastelli: In diesem Fall passiert etwas Seltsames oder du hast Kasras Antwort falsch verstanden. Fügen Sie den _complete_-Code, den Sie versucht haben, an das Ende Ihrer Frage an. –

1

Ich denke, es sollte sein:

mat = [[ 0 for x in range(column)] for y in range(row)] 

Hier ist ein Beispiel

>>> for x in range(column): 
...  for y in range(row): 
...    mat[x][y] = int("number: ") 
... 
1 
2 
3 
4 
5 
6 
>>> mat 
[[1, 2], [3, 4], [5, 6]] 
+0

Das sind 3 Zeilen x 2 Spalten. Das OP möchte 2 Zeilen x 3 Spalten. –

+0

@ PM2Ring, Ja aber dann wird die 'Matte' fälschlicherweise als erstellt betrachtet. Die Matrix initial = empty ist in dieser Form: '[[0, 0], [0, 0], [0, 0]]' oder zumindest erstellt das OP ... – coder

+0

Und das ist die Ursache für die OPs Problem! Laut ihren Code-Kommentaren, _want_ eine Matrix mit 2 Zeilen x 3 Spalten, aber sie haben ihre Zeilen und Spalten transponiert. –

Verwandte Themen