3 回答

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

TA贡献2021条经验 获得超8个赞
您可以使用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 minpos
print(find_min_index([1, 2, 3, 4], 1))
print(find_min_index([4, 3, 2, 1], 1))
输出
1
3

TA贡献1859条经验 获得超6个赞
enumerate在将列表切片k作为起始索引之前,您可以使用它来跟踪原始索引:
from operator import itemgetter
def 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))
会输出:
3
2
添加回答
举报