我有一个如下的浮点数和整数列表
[2,4.635,9,18,27.548,36]
对于给定的输入,我想通过将该数字与列表中的数字进行比较来找到该输入的先前数字
例如:
如果我以8.9
作为输入,我应该以{{1}}作为输出,是否有内置函数
答案 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)
如果列表已排序,则可能会有更好的方法来实现此目标(二进制搜索),但您无需说明这一事实。