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