小编典典

从整数列表中过滤最多20个值

python

我想创建一个列表 maxValues, 其中包含整数 lst 列表中的前20个值。

maxValues = []
for i in range(20):
  maxValues.append(max(lst))
  lst.remove(max(lst))

是否有更紧凑的代码可以完成此任务甚至内置功能?


阅读 131

收藏
2021-01-20

共1个答案

小编典典

heapq.nlargest()

maxvalues = heapq.nlargest(20, lst)

从文档中:

heapq.nlargest(n, iterable, key=None)

返回由定义的数据集中n个最大元素的列表iterablekey(如果提供)指定一个参数的函数,该函数用于从iterable中的每个元素中提取比较键:key=str.lower等效于:sorted(iterable, key=key, reverse=True)[:n]

或以相同的方式使用(heapq.nsmallest()如果您想要最小的)。

* doc
*重要提示

后两个函数[nlargestnsmallest]对于的较小值表现最佳n。对于较大的值,使用该sorted()功能效率更高。另外,当时n==1,使用内置函数min()max()功能会更有效。

2021-01-20