我试图找到“三个最大的非常最初的数字”,他们的索引在列表中。
我有一个数字从0到10的列表。
numbers=[3,5,2,3,3,5,6,2,1,2,3,4,5,6,7]有了这个数字:
第二位出现:5次 第三位出现:4次 第4位出现:3次
我有一个计算数字百分比的列表。
numbersInPercentage=[(100/len(numbers))*(numbers).count(0),
(100/len(numbers))*(numbers).count(1),
...
(100/len(numbers))*(numbers).count(10)]求3大数的My算法(代码块)
#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 %
这部分代码删除了那个索引,所以我的当前索引一个一个地减少。
numbersInPercentage.remove(largest_integer)看起来应该是:
数字是:2乘25.0 % 数字是:3乘20.0 % 数字是:4乘15.0 %
我的代码找到了最大的数字与他们的当前索引非常好,除了删除索引方法杀死我。
我需要分配其他移除索引的内容,或者我必须删除没有索引值的内容。
发布于 2018-08-25 21:30:09
对于前三个最大的数字及其索引,您可以这样做:
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)发布于 2018-08-25 21:32:38
您可以使用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这将返回它的计数旁边的数字。如果您想要百分比,那么您可以在稍后进行转换。
https://stackoverflow.com/questions/52021314
复制相似问题