2014-07-09 61 views
1

Python有一個內置函數min,它返回iterable內的最小值。最小索引內置函數

這對於使您的代碼簡潔明瞭非常有用。然而很多時候,我發現我實現我自己的minIndex功能:

def minIndex(v): 
    ret = -1 
    for i in xrange(len(v)): 
     if ret < 0 or v[ret]>v[i]: 
      ret = i 
    return ret 

確實的Python提供minIndex內置的實現?

+0

有一個['numpy.argmin'(HTTP://文檔.scipy.org/doc/numpy/reference/generated/numpy.argmin.html) –

回答

6

您可以輕鬆地使用min()此:

min(range(len(v)), key=v.__getitem__) 

由此產生的指標序列(在Python 2,xrange()會做也行),然後將這些指標映射到值v確定最低。

演示:

>>> v = [42, 81, 7, 99, -1, 1991] 
>>> min(range(len(v)), key=v.__getitem__) 
4 
+0

美麗!我非常喜歡這個解決方案。謝謝。 –

1

或者,您也可以做到這一點,如果你不喜歡使用__getitem__

min(range(len(v)),key=lambda x : v[x])