在浮点数和整数列表中找到上一个数字

时间:2018-07-08 16:41:05

标签: python

我有一个如下的浮点数和整数列表

[2,4.635,9,18,27.548,36]

对于给定的输入,我想通过将该数字与列表中的数字进行比较来找到该输入的先前数字 例如: 如果我以8.9作为输入,我应该以{{1​​}}作为输出,是否有内置函数

2 个答案:

答案 0 :(得分:4)

您可以使用bisect在排序列表中查找值的插入点:

import bisect 
li=[2,4.635,9,18,27.548,36]

>>> li[bisect.bisect_left(li,8.9)-1]    
4.635     

您还可以只使用一个简单的for循环和一个已排序列表上的zip

for lo,hi in zip(li,li[1:]):
    if lo< 8.9 <=hi:
        print lo 
        break   

答案 1 :(得分:1)

我不记得有任何内置方法,但是很容易实现:

def get_previous(l, query):
    return max([x for x in l if x<query])

query = 8.9
l = [2,4.635,9,18,27.548,36]
result = get_previous(l, query)

如果列表已排序,则可能会有更好的方法来实现此目标(二进制搜索),但您无需说明这一事实。