说我有以下列表:
my_list = [3.5, 1.6, 2.4, 8.9, 5.6]
我想在其原始位置找到前3个最大的数字,因此结果应为:
[3.5, 8.9, 5.6]
我该怎么办?
我想我可以找到3个最大的数字并使用过滤器,但是比较浮点数可能不是一个好主意。有什么建议么?
最佳答案
使用heap:
>>> import heapq
>>> heapq.nlargest(3, my_list)
[8.9, 5.6, 3.5]
为相同的想法添加一些修饰语,以使其保持原始顺序:
>>> from operator import itemgetter
>>> i_val = heapq.nlargest(3, enumerate(my_list), key=itemgetter(1))
>>> [val for (i, val) in sorted(i_val)]
[3.5, 8.9, 5.6]
关于python - 在python中按原始顺序查找列表的前k个最大项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58070203/