python - 在排序列表中查找下一个较低的项目

标签 python

假设我有一个经过排序的 float 列表。现在我想获取给定值的下一个较低项的索引。通常的 for 循环方法具有 O(n) 的复杂性。由于列表已排序,因此必须有一种方法可以使用 O(log n) 获取索引。

我的 O(n) 方法:

index=0
for i,value in enumerate(mylist):
    if value>compareValue:
        index=i-1

O(log n) 中是否有解决该问题的数据类型?

最佳答案

bisect怎么样? ?

>>> import bisect
>>> float_list = [1.0, 1.3, 2.3, 4.5]
>>> i = bisect.bisect_left(float_list, 2.5)
>>> index = i - 1
>>> index
2

您可能必须单独处理搜索值小于或等于列表中最低/最左边值的情况(在这种情况下为 index == -1)。

根据您希望在相等情况下使用哪个索引,您可能必须改用 bisect_right

关于python - 在排序列表中查找下一个较低的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2591159/

相关文章:

python - 通过顶点id获取边权重

python - 如何从脚本中搜索 Stack Overflow 问题?

python - python 中的全局关键字

python - 将图表重新绘制为视频

javascript - 如何用自定义变量替换 DJANGO 中 JAVASCRIPT 脚本生成的 Google map key

python - 使用 Image Viewer (Eye of GNOME) 在一个目录中打开多个图像

python - 从图像中识别矩阵

python - 如何使用python读取文件?

Python 3 - 基于字符串的字典搜索列表

python - Numpy Sum 当每个数组都有特定值时