【发布时间】:2016-02-15 13:24:10
【问题描述】:
我有一个整数列表,我想找到列表中的最大值(最大值和最接近)及其对应的索引值。
我有一种方法,但我觉得它太复杂了!
lst = [10,6,17,99,3,1,-3,47, 99]
max_value = (max(lst))
largest = 0.0
largest_index = 0
second_largest = 0.0
second_largest_index = 0
third_largest = 0
third_largest_index = 0
for (index,value) in enumerate (lst):
if value == largest_value:
if largest == 0.0:
largest = value
largest_index = index
elif largest != 0.0 and value > second_largest:
second_largest = value
second_largest_index= index
elif second_largest != 0.0 and value > third_largest:
third_largest = value
third_largest_index = index
elif third_largest != 0.0 and value > third_largest:
fourth_largest = value
fourth_largest_index = index
elif value > second_largest and value < largest_value:
second_largest = value
second_largest_index = index
elif value > third_largest and value < second_largest:
third_largest = value
third_largest_index = index
elif value > fourth_largest and value < third_largest:
fourth_largest = value
fourth_largest_index = index
indexlist = [largest_index, second_largest_index, third_largest_index, fourth_largest_index]
return indexlist
因为列表可能有重复的值(我想保留),可能是四个最大值最终是“a、a、b、c”。所以我试图同时找到最大值和第二/第三/等最大值。
当我试图找到索引值时,我认为对列表进行排序不会有帮助。有没有办法保留原始列表的索引,以便在我将列表从高到低排序时也会对其进行修改?
为清楚起见进行编辑:可能是我有 [99,95, 50, 90,99] (多次出现最大值)或 [99, 70, 70, 90,50] 的情况。我想要做的是找到最高值 - 可能但不一定多次出现最大值。
【问题讨论】:
-
您希望返回列表中第一个找到的最大数字的索引吗?最大的数能有多少?
-
@534 你想要多少个最大值?总是一样吗?
-
另外,请不要使用'list'作为变量名,因为它是python中的内置类型
标签: python sorting indexing ranking