gpt4 book ai didi

algorithm - 如何有效地获取列表中较大的 k 个元素?

转载 作者:IT老高 更新时间:2023-10-28 22:16:33 25 4
gpt4 key购买 nike

解决这个问题的最有效、最优雅和 Pythonic 的方法是什么?

给定一个包含 n 个元素的列表(或集合或其他),我们想要获得最大的 k 个元素。 (你可以假设 k<n/2 不失一般性,我猜)例如,如果列表是:

l = [9,1,6,4,2,8,3,7,5]

n = 9,假设 k = 3。检索 3 个最大的最有效的算法是什么?在这种情况下,我们应该得到 [9,8,7] ,没有特别的顺序。

谢谢!曼努埃尔

最佳答案

使用 heapq 模块中的 nlargest

from heapq import nlargest
lst = [9,1,6,4,2,8,3,7,5]
nlargest(3, lst) # Gives [9,8,7]

如果你想改变你的标准,你也可以给 nlargest 一个键:

from heapq import nlargest
tags = [ ("python", 30), ("ruby", 25), ("c++", 50), ("lisp", 20) ]
nlargest(2, tags, key=lambda e:e[1]) # Gives [ ("c++", 50), ("python", 30) ]

关于algorithm - 如何有效地获取列表中较大的 k 个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2243542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com