python 找出list中最大或者最小几个数的索引

python 找出list中最大或者最小几个数的索引
目前大部分都是下述的做法。这个做法其实是有问题的。

nums = [39,0,0,0,3,0]
result = map(nums.index, heapq.nlargest(3, nums))
temp=[]
Inf = 0
for i in range(3):
  temp.append(nums.index(max(nums)))
  nums[nums.index(max(nums))]=Inf
result.sort()
temp.sort()
print(result)
print(temp)

这种情况下输出是会出错的,会得到[0,4,0,0,0,0]
正确的代码如下,这里的inf 要保证比所有输入list中所有元素都要小才行。

def nlarge(n,list):
    nums=list
    temp = []
    Inf = -1
    for i in range(n):
        temp.append(nums.index(max(nums)))
        nums[nums.index(max(nums))] = Inf

    return temp

你可能感兴趣的:(python 找出list中最大或者最小几个数的索引)