如何在不删除元素索引的情况下删除元素?

2024-09-17 18:28:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找到“三个最大的第一个数字”和他们的索引列表。你知道吗

我有一个编号为010的列表。你知道吗

numbers=[3,5,2,3,3,5,6,2,1,2,3,4,5,6,7]

使用以下数字:

Number 2 is show up: 5 Times

Number 3 is show up: 4 Times

Number 4 is show up: 3 Times

我有一份计算数字百分比的清单

numbersInPercentage=[(100/len(numbers))*(numbers).count(0),
(100/len(numbers))*(numbers).count(1),
...
(100/len(numbers))*(numbers).count(10)]

我的算法(代码块)寻找3个最大的数字

           #first biggest
        largest_integer = max(numbersInPercentage) 
        index = numbersInPercentage.index(max(numbersInPercentage))
        print('Number is :', index," by ",largest_integer,"%")
        numbersInPercentage.remove(largest_integer) # this part killing me

           #second biggest
        second_largest_integer = max(numbersInPercentage)  
        index = numbersInPercentage.index(max(numbersInPercentage))
        print('Number is :', index," by ",second_largest_integer,"%")
        numbersInPercentage.remove(second_largest_integer) # this part killing me

           #thirdbiggest
        third_largest_integer = max(numbersInPercentage)  
        index = numbersInPercentage.index(max(numbersInPercentage))
        print('Number is :', index," by ",third_largest_integer,"%")
        numbersInPercentage.remove(third_largest_integer) # this part killing me

输出如下所示:

Number is : 2 by 25.0 %

Number is : 2 by 20.0 %

Number is : 2 by 15.0 %

这部分代码删除了那个索引,所以我的当前索引一个接一个地减少。你知道吗

numbersInPercentage.remove(largest_integer)

应该是这样的:

Number is : 2 by 25.0 %

Number is : 3 by 20.0 %

Number is : 4 by 15.0 %

我的代码用它们当前的索引很好地找到了最大的数字,除了删除索引方法会杀了我。你知道吗

我需要分配其他删除索引的内容,否则我必须删除没有索引值的内容。你知道吗


Tags: numberindexbyisshow数字integermax
2条回答

对于前3个最大的数字及其索引,您可以执行以下操作:

numbers=[3,5,2,3,3,5,6,2,1,2,3,4,5,6,7]

res = [(el, numbers.index(el)) for el in sorted(list(set(numbers)), reverse=True)[:3]]

输出:

(7, 14), (6, 6), (5, 1)

您可以使用collections.Counter

>>> from collections import Counter
>>> sorted(Counter(numbers).items(), key=lambda x: x[1], reverse=True)[:3]
[(3, 4), (5, 3), (2, 3)]
  ^  ^
  |  |
number
     |
   count

这将返回与其计数一起的数字。如果你想要百分比,你可以稍后再做转换。你知道吗

相关问题 更多 >