2016-10-10 173 views
2

我有這樣的矩陣:在矩陣添加元素蟒蛇

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行x 2列。 OP想要2行x 3列。 –

+0

@ PM2Ring,是的,但是'mat'被認爲是錯誤創建的。最初=空的矩陣是這種形式:'[[0,0],[0,0],[0,0]]'或至少這是OP創建的內容... – coder

+0

這就是OP的問題!根據他們的代碼評論,他們想要一個有2行x 3列的矩陣,但他們得到了他們的行和列轉置。 –