假设我有一个列表,比如:
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
,一次查找匹配的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)