我有一系列随机浮动的列表,从负到正,如:
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)
答案 0 :(得分:0)
如果值列表变长,您可能需要标准库中的bisect module
bisect_left
,bisect_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