2013-04-16 412 views
2

我的程序中有一個功能可以進行分割和浮動。然後將矩陣傳遞給主程序。現在我有一個函數來查找最小值的行和列。在Martijn Pieters的幫助下,我能夠獲得最低價值,但是這對。輸出示例如下。 E是從main傳遞給此函數的方矩陣。在python的行和列中查找最小配對值?

值存儲在txt文件中,並在單獨的函數中讀取並將矩陣傳遞給main。從它們的矩陣傳遞給下面的函數。

0 2 8 9 
2 4 9 9 
4 7 4 8 
3 4 8 9 

代碼:

def closest_pair(e): 
    '''for row in range(len(e)): 
     for col in range(0,len(row),1): 
      minrow = min(e[row]) 
      mincol = min(e[col]) 
      return ([minrow], [mincol])''' 
     result = min((min((v, c) for c, v in enumerate(row)), r) for r, row in enumerate(e)) 
     return result[1], result[0][1] 

這幫助我找到的行和列的最小值但是產量,以獲得對。同樣對於第一個值爲0的情況,如果(0,0)的值爲0,那麼0將不會計數,那麼這不算作最小值。這就是說,例如,如果第1行和第1列的值是[2,2]成對,並且是唯一的最小配對比輸出(1,1)。

+1

幫助我。鑑於上述數據,你期望什麼答案? – hughdbrown

+0

@hughdbrown:預期的答案是該行的最小值爲 –

+0

min成對值的列數,例如,如果第1行和第1列的值爲2,2並且其餘值的值較高,則(2,2) )將被視爲最小配對值 – user2287240

回答

1

你想要這個嗎?

>>> def closest_pair(e): 
...  remapped = [(e[x][y], (x, y)) for x, row in enumerate(e) for y, col in enumerate(row)] 
...  return min(remapped) 
... 
>>> a = [[0, 2, 8, 9], [2, 4, 9, 9], [4, 7, 4, 8], [3, 4, 8, 9]] 
>>> closest_pair(a) 
(0, (0, 0)) 

或者:

def closest_pair(e): 
    return min(
     (e[x][y], (x, y)) 
     for x, row in enumerate(e) 
     for y, col in enumerate(row) 
    ) 
相關問題