python找数字_python – 找到与给定数字最接近的数字

2023-05-16

heapq.nsmallest()功能将这样整齐和有效:

>>> from heapq import nsmallest

>>> s = [1,2,3,4,5,6,7]

>>> nsmallest(3, s, key=lambda x: abs(x-6.5))

[6, 7, 5]

基本上,这说,“给我三个输入值与数字6.5的绝对差最小。

nsmallest的算法使得对数据进行单次传递,在任何时间保持不超过内存中的n个最佳值(这意味着它可以与任何输入迭代器一起使用,是高速缓存效率和空间效率的)。

当找到新的“最佳”值时,算法仅向堆添加新值。因此,它使得进行的比较的数量最小化。例如,如果您在1,000,000个随机输入中查找100个最佳值,则通常会进行少于1,008,000次比较(比使用min()找到单个最佳值大约多0.8%的比较)。

对于min(),nsmallest()和sorted()的key functions都保证在输入iterable中每个值只调用一次键函数。这意味着该技术对于n个最接近的值问题(即,sound the most alike,最接近colors,smallest diffs,最少的遗传突变,欧几里德距离等)的甚至更复杂和有趣的示例将是有效的。

nsmallest()和sorted()将返回按接近度排序的列表排名(关系由首先看到的值确定)。

对于有兴趣的人,有一个涉及的比较的预期数量的分析here和here.快速总结:

>随机输入的平均情况:n k *(log(k,2)* log(n / k)log(k,2)log(n / k))>用于上升输入的最佳情况:n k * log(k,2)>最差情况下降输入:n * log(k,2)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python找数字_python – 找到与给定数字最接近的数字 的相关文章

随机推荐