首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除元素而不删除元素的索引?

如何删除元素而不删除元素的索引?
EN

Stack Overflow用户
提问于 2018-08-25 21:21:13
回答 2查看 81关注 0票数 0

我试图找到“三个最大的非常最初的数字”,他们的索引在列表中。

我有一个数字从010的列表。

代码语言:javascript
复制
numbers=[3,5,2,3,3,5,6,2,1,2,3,4,5,6,7]

有了这个数字:

第二位出现:5次 第三位出现:4次 第4位出现:3次

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

代码语言:javascript
复制
numbersInPercentage=[(100/len(numbers))*(numbers).count(0),
(100/len(numbers))*(numbers).count(1),
...
(100/len(numbers))*(numbers).count(10)]

求3大数的My算法(代码块)

代码语言:javascript
复制
           #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乘25.0 % 数字是:2乘20.0 % 数字是:2乘15.0 %

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

代码语言:javascript
复制
numbersInPercentage.remove(largest_integer)

看起来应该是:

数字是:2乘25.0 % 数字是:3乘20.0 % 数字是:4乘15.0 %

我的代码找到了最大的数字与他们的当前索引非常好,除了删除索引方法杀死我。

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

EN

回答 2

Stack Overflow用户

发布于 2018-08-25 21:30:09

对于前三个最大的数字及其索引,您可以这样做:

代码语言:javascript
复制
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]]

其中产出:

代码语言:javascript
复制
(7, 14), (6, 6), (5, 1)
票数 0
EN

Stack Overflow用户

发布于 2018-08-25 21:32:38

您可以使用collections.Counter

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

这将返回它的计数旁边的数字。如果您想要百分比,那么您可以在稍后进行转换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52021314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档