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

时间:2018-08-25 21:21:13

标签: python python-3.x indexing element pop

我正尝试在列表中找到“ 3个最大的第一个数字”。

例如;

我有一个数字从0到10的列表。

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

具有以下数字:

  

显示2号:5次

     

显示3号:4次

     

显示数字4:3次

我有一个计算百分比的列表

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

输出如下:

  

数字是:2 x 25.0%

     

数字是:2 x 20.0%

     

数字是:2 x 15.0%

这部分代码删除了该索引,所以我当前的索引一一减少。     numbersInPercentage.remove(largest_integer)

应该看起来像:

  

数字是:2 x 25.0%

     

数字是:3 x 20.0%

     

数字是:4 x 15.0%

除了删除索引方法杀死了我之外,我的代码在当前索引中找到了最大数目。

我需要分配其他删除索引的东西,或者我必须删除没有索引值的东西。

附言: 对不起我那些不当语言的人,希望您能理解我的问题。 请问有人能以适当的方式提出我的问题。谢谢。

2 个答案:

答案 0 :(得分:0)

对于具有索引的前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)

答案 1 :(得分:0)

您可以使用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

这将返回数字及其计数。如果需要百分比,可以稍后再进行转换。