2024-04-19 00:47:22 发布
网友
我有一个浮点数和整数的列表,如下所示
[2,4.635,9,18,27.548,36]
对于一个给定的输入,我想通过将该数字与列表中的数字进行比较,找到该输入在列表中的前一个数字 例如: 如果我把8.9作为输入,我应该把4.635作为输出,这个函数有内置函数吗
8.9
4.635
可以使用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
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)
如果对列表进行排序,可能会有更好的方法来实现这一点(二进制搜索),但您不需要说明这一事实。你知道吗
可以使用bisect在排序列表中查找值的插入点:
您也可以使用一个简单的
for
循环和排序列表上的zip
:我不记得有什么内置方法,但很容易实现:
如果对列表进行排序,可能会有更好的方法来实现这一点(二进制搜索),但您不需要说明这一事实。你知道吗
相关问题 更多 >
编程相关推荐