簡體   English   中英

在列表中查找下一個最接近的數字

[英]Finding the next closest number in a list

我有一個清單:

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_left以對數時間為您提供最左邊的插入索引(假設列表已排序,您的帖子似乎表明它是這樣的):

from bisect import bisect_left

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

對於大於1260的數字,這將引發IndexError

filter(lambda x: x>=460, A).__next__() # 460 filter(lambda x: x>=470, A).__next__() # 600 filter(lambda x: x>=670, A).__next__() # 750

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM