从整数列表中过滤最多20个值
问题内容:
我想创建一个列表 maxValues, 其中包含整数 lst 列表中的前20个值。
maxValues = []
for i in range(20):
maxValues.append(max(lst))
lst.remove(max(lst))
是否有更紧凑的代码可以完成此任务甚至内置功能?
问题答案:
maxvalues = heapq.nlargest(20, lst)
从文档中:
heapq.nlargest(n, iterable, key=None)
返回由定义的数据集中n个最大元素的列表
iterable
。key
(如果提供)指定一个参数的函数,该函数用于从iterable中的每个元素中提取比较键:key=str.lower
等效于:sorted(iterable, key=key, reverse=True)[:n]
或以相同的方式使用(heapq.nsmallest()
如果您想要最小的)。
* doc
*重要提示 :
后两个函数[
nlargest
和nsmallest
]对于的较小值表现最佳n
。对于较大的值,使用该sorted()
功能效率更高。另外,当时n==1
,使用内置函数min()
和max()
功能会更有效。