如果我想要一个列表中的最大值,我可以只写max(list),但如果我还需要最大值的索引呢?

我可以这样写:

maximum=0
for i,value in enumerate(List):
    if value>maximum:
        maximum=value
        index=i

但我觉得很乏味。

如果我写:

List.index(max(List))

然后它将迭代该列表两次。

有没有更好的办法?


当前回答

我建议一个非常简单的方法:

import numpy as np
l = [10, 22, 8, 8, 11]
print(np.argmax(l))
print(np.argmin(l))

希望能有所帮助。

其他回答

有很多选择,例如:

import operator
index, value = max(enumerate(my_list), key=operator.itemgetter(1))

也许你需要一个排序的列表?

试试这个:

your_list = [13, 352, 2553, 0.5, 89, 0.4]
sorted_list = sorted(your_list)
index_of_higher_value = your_list.index(sorted_list[-1])

下面是一个使用Python内置函数的完整解决方案:

# Create the List
numbers = input("Enter the elements of the list. Separate each value with a comma. Do not put a comma at the end.\n").split(",") 

# Convert the elements in the list (treated as strings) to integers
numberL = [int(element) for element in numbers] 

# Loop through the list with a for-loop

for elements in numberL:
    maxEle = max(numberL)
    indexMax = numberL.index(maxEle)

print(maxEle)
print(indexMax)

使用Python的内置库,这非常简单:

a = [2, 9, -10, 5, 18, 9] 
max(xrange(len(a)), key = lambda x: a[x])

这告诉max找到列表中最大的数字[0,1,2,…], len(a)],使用自定义函数lambda x: a[x],这表明0实际上是2,1实际上是9,等等。

我建议一个非常简单的方法:

import numpy as np
l = [10, 22, 8, 8, 11]
print(np.argmax(l))
print(np.argmin(l))

希望能有所帮助。