2014-07-09 31 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])