所以说我有一个清单,像:
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
,max
,len
等简单方法。 最佳答案
您可以使用maxval
确定max
:
maxval = max(my_list)
然后使用
enumerate
和list 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)