假设我有一个列表,比如:

my_list = [12, 13, 51, 21, 22, 58, 45.1, 34.2, 56, 6, 58, 58]

所以这里的最大值显然是58,但我不想只返回一个58,我想要一个包含最大值的所有索引的列表。
基本上,我想要结果
我知道如果我想要最大的数字,我可以做,但这只会给我第一个索引。
有什么建议吗?此外,我还想坚持简单的方法,如[5, 10, 11]my_list.index(max(my_list))sort等…

最佳答案

您可以使用maxval确定max

maxval = max(my_list)

然后使用enumerate和alist comprehension获取索引:
indices = [index for index, val in enumerate(my_list) if val == maxval]

举个例子,我知道
maxval == 58
indices = [5, 10, 11]

根据keyser的建议,您可以通过执行以下操作保存对列表的两次迭代(一次确定maxval,一次查找匹配的indexes):
maxval = None
for index, val in enumerate(my_list):
    if maxval is None or val > maxval:
        indices = [index]
        maxval = val
    elif val == maxval:
        indices.append(index)

08-24 16:23