[英]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.