猿问

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

我有一个清单:


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


我需要找到最大值位于哪个位置。请帮忙。


慕村225694
浏览 1872回答 3
3回答

HUX布斯

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

jeck猫

所选答案(以及大多数其他答案)需要至少两次通过列表。这是一站式解决方案,对于较长的列表而言可能是更好的选择。编辑:解决@John Machin指出的两个缺陷。对于(2),我尝试根据每种条件发生的估计概率和前辈的推论来优化测试。找出合适的初始化值max_val并max_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
随时随地看视频慕课网APP

相关分类

Python
我要回答