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

标签 python list sorting filter find

我有一个列表,其中包含一系列从负到正的随机 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/

相关文章:

python - 如何在给定的不规则日期对时间序列重新采样

c++ - 获取指向列表中对象的永久指针

c# - 将现有对象添加到列表

java - 如何用Java编写位排序程序?

python - 单击屏幕时程序关闭

python - 为什么当我将鼠标悬停在 imshow 上时不显示像素值?

MySQL按邮政编码排序,然后在每个邮政编码中随机排序

algorithm - 不使用循环对字符串列表进行排序的伪代码

python - 制作一个简单的《太空侵略者》克隆——pygame.time.delay 导致崩溃

python - 如何在Python中改善列表上的模式匹配