我有一个清单:
a = [32, 37, 28, 30, 37, 25, 27, 24, 35, 55, 23, 31, 55, 21, 40, 18, 50,
35, 41, 49, 37, 19, 40, 41, 31]
最大元素是55(两个元素在位置9和12)
我需要找到在哪个位置(s)的最大值是位于。请帮助。
我有一个清单:
a = [32, 37, 28, 30, 37, 25, 27, 24, 35, 55, 23, 31, 55, 21, 40, 18, 50,
35, 41, 49, 37, 19, 40, 41, 31]
最大元素是55(两个元素在位置9和12)
我需要找到在哪个位置(s)的最大值是位于。请帮助。
当前回答
如果你想获取一个名为data的列表中最大n个数字的索引,你可以使用Pandas sort_values:
pd.Series(data).sort_values(ascending=False).index[0:n]
其他回答
只有一句话:
idx = max(range(len(a)), key = lambda i: a[i])
你可以用不同的方法来做。
传统的方法是,
maxIndexList = list() #this list will store indices of maximum values
maximumValue = max(a) #get maximum value of the list
length = len(a) #calculate length of the array
for i in range(length): #loop through 0 to length-1 (because, 0 based indexing)
if a[i]==maximumValue: #if any value of list a is equal to maximum value then store its index to maxIndexList
maxIndexList.append(i)
print(maxIndexList) #finally print the list
另一种不计算列表长度并将最大值存储到任何变量的方法是,
maxIndexList = list()
index = 0 #variable to store index
for i in a: #iterate through the list (actually iterating through the value of list, not index )
if i==max(a): #max(a) returns a maximum value of list.
maxIndexList.append(index) #store the index of maximum value
index = index+1 #increment the index
print(maxIndexList)
我们可以用python和聪明的方式来做!在一行中使用列表理解,
maxIndexList = [i for i,j in enumerate(a) if j==max(a)] #here,i=index and j = value of that index
我所有的代码都是Python 3的。
a.index(max(a))
会告诉你列表a中值最大的元素的第一个实例的索引。
这里有一个简单的单步解决方案。
import math
nums = [32, 37, 28, 30, 37, 25, 55, 27, 24, 35, 55, 23, 31]
max_val = -math.inf
res = []
for i, val in enumerate(nums):
if(max_val < val):
max_val = val
res = [i]
elif(max_val == val):
res.append(i)
print(res)
>>> m = max(a)
>>> [i for i, j in enumerate(a) if j == m]
[9, 12]