在浮点和整数的列表中查找前一个数字

2024-04-19 00:47:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

对于一个给定的输入,我想通过将该数字与列表中的数字进行比较,找到该输入在列表中的前一个数字 例如: 如果我把8.9作为输入,我应该把4.635作为输出,这个函数有内置函数吗


Tags: 函数列表数字整数内置浮点数
2条回答

可以使用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   

我不记得有什么内置方法,但很容易实现:

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)

如果对列表进行排序,可能会有更好的方法来实现这一点(二进制搜索),但您不需要说明这一事实。你知道吗

相关问题 更多 >