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() 函数会更有效率。