如何查找列表中最大值的所有位置?

2024-03-28 11:20:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个清单:

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上有两个元素)

我需要找出最大值在哪个位置。求求你,救命。


Tags: 元素
3条回答

所选答案(以及大多数其他答案)至少需要两次通过列表。
这里有一个单程解决方案,对于较长的列表可能是更好的选择。

编辑:以解决@John Machin指出的两个缺陷。对于(2)我试图根据每个条件的猜测发生概率和前人允许的推论来优化测试。找出max_valmax_indices的正确初始化值有点困难,这适用于所有可能的情况,特别是如果max恰好是列表中的第一个值,但我相信现在是这样。

def maxelements(seq):
    ''' Return list of position(s) of largest element '''
    max_indices = []
    if seq:
        max_val = seq[0]
        for i,val in ((i,val) for i,val in enumerate(seq) if val >= max_val):
            if val == max_val:
                max_indices.append(i)
            else:
                max_val = val
                max_indices = [i]

    return max_indices
a.index(max(a))

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

>>> m = max(a)
>>> [i for i, j in enumerate(a) if j == m]
[9, 12]

相关问题 更多 >