我有一个列表,其中包含一系列从负到正的随机 float ,例如:
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)
最佳答案
如果值列表很长,您可能需要 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
关于python - 查找低于/高于阈值的第一个值的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46536913/