Python技巧之返回列表中最接近元素n的k个元素


heapq.nsmallest(n, iterable, key=None)
从 iterable 所定义的数据集中返回前 n 个最小元素组成的列表。

如果提供了 key 则其应指定一个单参数的函数,用于从 iterable 的每个元素中提取比较键 (例如 key=str.lower)。 等价于: sorted(iterable, key=key)[:n]

nums = [-4,-2,1,4,8]; n=0
from heapq import nsmallest
# 返回最接近n的前两个数
res = nsmallest(2, nums, key=lambda x: abs(x-n))
print(res)  # [1,-2]    

同理,heapq.nlargest(n, iterable, key=None):返回前 n 个最大元素组成的列表。

两个函数在 n 值较小时性能最好。 对于更大的值,使用 sorted() 函数会更有效率。 此外,当 n==1 时,使用内置的 min() 和 max() 函数会更有效率。

相关