Python - 从索引 k 开始查找列表 A 中最小元素的索引

我一直在寻找如何考虑“k”来解决以下问题。基本上,它应该从索引 k 开始,并在从 k 到列表末尾的范围内查找最小值。


def find_min_index(A, k):

    """

    Finds the index of the smallest element in the list A from index k onwards


    Parameters:

        A (list)

        k: index from which start search


    Example use:

    >>> find_min_index([1, 2, 5, -1], 0)

    3

    >>> find_min_index([1, 1, 1, 5, 9], 2)

    2

    """


    minpos = A.index(min(A))

    return minpos


慕莱坞森
浏览 397回答 3
3回答

慕姐8265434

单线解决方案是这样的:return A[k:].index(min(A[k:]) + k您从 A[k:] 中选择最小元素,在 A[k:] 中找到它的索引并将 k 添加到它以补偿搜索区域。一个稍微简洁的解决方案是这样的:slice = A[k:] return slice.index(min(slice)) + k

宝慕林4294392

您可以使用enumerate来查找 min 的索引:def find_min_index(A, k):    """    Finds the index of the smallest element in the list A from index k onwards    Parameters:        A (list)        k: index from which start search    Example use:    >>> find_min_index([1, 2, 5, -1], 0)    3    >>> find_min_index([1, 1, 1, 5, 9], 2)    2    """    o, _ = min(enumerate(A[k:]), key=lambda i: i[1])    minpos = k + o    return minposprint(find_min_index([1, 2, 3, 4], 1))print(find_min_index([4, 3, 2, 1], 1))输出13

BIG阳

enumerate在将列表切片k作为起始索引之前,您可以使用它来跟踪原始索引:from operator import itemgetterdef find_min_index(A, k):    return min(list(enumerate(A))[k:], key=itemgetter(1))[0]以便:print(find_min_index([1, 2, 5, -1], 0))print(find_min_index([1, 1, 1, 5, 9], 2))会输出:32
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python