为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕村225694 2019-10-25 15:25:19
我有一个清单: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上的两个元素)我需要找到最大值位于哪个位置。请帮忙。
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

>>> m = max(a)

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

[9, 12]


查看完整回答
反对 回复 2019-10-25
?
jeck猫

TA贡献1909条经验 获得超7个赞

所选答案(以及大多数其他答案)需要至少两次通过列表。

这是一站式解决方案,对于较长的列表而言可能是更好的选择。


编辑:解决@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


查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 1871 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信