【问题标题】:Find index of the first value that is below/above a threshold查找低于/高于阈值的第一个值的索引
【发布时间】:2018-03-14 04:44:24
【问题描述】:

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

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)

【问题讨论】:

  • 那些不是整数?
  • 错字,现在更正。

标签: python list sorting filter find


【解决方案1】:

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

bisect_leftbisect_right 可以作为&gt;&lt; 测试

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

【讨论】:

    猜你喜欢
    • 2019-02-10
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 2017-07-19
    相关资源
    最近更新 更多