最小索引内置功能



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内置实现吗?

您可以轻松地使用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

如果您不喜欢使用__getitem__

,您也可以这样做
min(range(len(v)),key=lambda x : v[x])

最新更新