2016-10-10 15 views
2

に行列の要素を追加します。は、私は、この行列を持っているのpython

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

私は行列に要素を追加しようとしました:

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

が、シェルに戻り、このエラー:

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 

マトリックスに要素を追加するにはどうすればよいですか?

+0

numpyのを使用していない理由は? – percusse

+3

私はnumpyなしでやりたかった –

答えて

4

内側のリストには、列に基づくべきである:ここでは

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

は一例です:

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

私は試しましたが、同じエラーがあります –

+0

@FrancescoRastelli例を確認してください。 – Kasramvd

+0

@FrancescoRastelli:その場合、何か不思議なことが起こっている、またはあなたがKasraの答えを誤解しています。質問の最後に試した_complete_コードを追加してください。 –

1

私はそれがあるべきだと思う:

>>> 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

これは3行×2列です。 OPは2行×3列が必要です。 –

+0

@ PM2Ring、はい、しかし 'mat'は誤って作成されたものとみなされます。最初の空の行列は '[[0、0]、[0、0]、[0、0]]'または少なくともOPが作成するものです... – coder

+0

OPの問題!彼らのコードコメントによれば、2行x 3列の行列を必要としますが、行と列を転置しています。 –

関連する問題