我有一个清单:

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.index(max(a))

会告诉你列表a中值最大的元素的第一个实例的索引。

其他回答

>>> m = max(a)
>>> [i for i, j in enumerate(a) if j == m]
[9, 12]
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)

@shash在其他地方回答了这个问题

找到最大列表元素的索引的python方法是 Position = max(enumerate(a), key=lambda x: x[1])[0]

一个通过。然而,它比@Silent_Ghost的解决方案慢,甚至比@nmichaels的解决方案更慢:

for i in s m j n; do echo $i;  python -mtimeit -s"import maxelements as me" "me.maxelements_${i}(me.a)"; done
s
100000 loops, best of 3: 3.13 usec per loop
m
100000 loops, best of 3: 4.99 usec per loop
j
100000 loops, best of 3: 3.71 usec per loop
n
1000000 loops, best of 3: 1.31 usec per loop

还有一个解决方案,只给出第一个外观,可以通过使用numpy实现:

>>> import numpy as np
>>> a_np = np.array(a)
>>> np.argmax(a_np)
9