在列表中查找下一个最接近的数字

我有一个清单:

lst = [100, 210, 330, 460, 600, 750, 910, 1080, 1260]

和一个给定的数字 470

我想找到它的两个最接近的数字之间的间隔的下一个上限......这会给出,600因为它是下一个最接近的数字。

如果是670我会得到750

我有lst[min(range(len(lst)), key = lambda i: abs(lst[i]-K))]哪个给出壁橱编号,无论它是否是上限。

回答

您可以使用bisect.bisect_leftwhich 以对数时间为您提供最左边的插入索引(假设列表已排序,您的帖子似乎表明它是):

from bisect import bisect_left

A[bisect_left(A, 460)]
460
>>> A[bisect_left(A, 470)]
600
>>> A[bisect_left(A, 670)]
750

IndexError对于大于 的数字,这将引发1260


以上是在列表中查找下一个最接近的数字的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>