2015-12-03 115 views
0

我有一個矩陣[[0 0 0 0 0 0 0] [1 0 0 1 0 0 1] [2 1 0 0 1 0 0]]。我需要要返回最後一行中最大但小於2的元素的索引,則應該返回最高值的索引。如何在找到最大值後返回元素索引

例如,在我的矩陣中,我需要程序返回M [2,4],2,4作爲解決方案。我的程序正在運行,但它返回的值是M [2,1]位置。

M=[[0 0 0 0 0 0 0] 
[1 0 0 1 0 0 1] 
[2 1 0 0 1 0 0]] 
    ma=0 
    for i in range(1,2): 
     for j in range(0,7): 
      if M[i,j]<2 and ma<=M[i,j]: 
       ma=M[i,j] 
       return M[i,j],i,j 

回答

0

問題是它返回得太早。掃描完所有元素後,應該讓它返回。在這種情況下,return語句不應該放在內部循環中,而應該放在外部for循環之外。另外我認爲你需要跟蹤最高值的指數以及ma,因爲i,j是循環結束後最後一個元素的值。

原代碼的語法似乎不正確,所以我已經做了一些修改:

def test(): 
    M=[[0, 0, 0, 0, 0, 0, 0], 
      [1, 0, 0, 1, 0, 0, 1], 
      [2, 1, 0, 0, 1, 0, 0]] 
    ma=0 
    maxi = maxj = 0 
    for i in range(0,3): 
     for j in range(0,7): 
      if M[i][j] < 2 and ma <= M[i][j]: 
       ma = M[i][j] 
       maxi = i 
       maxj = j 
    return(ma, maxi, maxj) 

print(test()) 

此代碼輸出期望的結果:(1, 2, 4)

+0

它返回正確的M [I,J],但I,J值(1,2,6) –

+0

哎呀,忘了i,j的值會在每個內部循環中改變。我已經更新了我的答案。 –

+0

你能否給我建議一個出路..我無法想象它。 –

相關問題