查找低于/高于阈值的第一个值的索引

时间:2017-10-03 03:47:19

标签: python list sorting filter find

我有一系列随机浮动的列表,从负到正,如:

values = [0.001, 0.05, 0.09, 0.1, 0.4, 0.8, 0.9, 0.95, 0.99]

我希望过滤出首先满足大于/小于我希望的值的索引。例如,如果我希望第一个最接近的值小于0.1,我会得到2的索引,如果我想要第一个最大值大于0.9,我会得到7

我使用的是find_nearest方法,但由于此数据集是随机的,因此这并不理想。

编辑:找出解决方案。

low = next(x[0] for x in enumerate(list(reversed(values))) if x[1] < 0.1)
high = next(x[0] for x in enumerate(values) if x[1] > 0.9)

1 个答案:

答案 0 :(得分:0)

如果值列表变长,您可能需要标准库中的bisect module

bisect_leftbisect_right可以作为><测试

import bisect
values = [0.001, 0.05, 0.09, 0.1, 0.4, 0.8, 0.9, 0.95, 0.99]
bisect.bisect_left(values, .1)
Out[226]: 3

bisect.bisect_right(values, .1)
Out[227]: 4