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

Python 查找低于/高于阈值的第一个值的索引,python,list,sorting,filter,find,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 enum

我有一个列表,其中包含一系列从负到正的随机浮动,如:

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)
low=next(如果x[1]<0.1,则枚举(列表(反向(值))中x的x[0])
高=下一个(如果x[1]>0.9,则枚举(值)中x的x[0]

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


bisect\u left
bisect\u 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