所以说我有一个清单,像:

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)),但这只会给我第一个索引。

有小费吗?另外,我想坚持使用诸如sortmaxlen等简单方法。

最佳答案

您可以使用maxval确定max

maxval = max(my_list)


然后使用enumeratelist comprehension获取索引:

indices = [index for index, val in enumerate(my_list) if val == maxval]


例如,我得到

maxval == 58
indices = [5, 10, 11]




根据Keyser的建议,您可以通过以下操作将遍历遍历两次保存一次(一次确定maxval,一次找到匹配的index es):

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)

10-06 00:01