Python bisect_left

Cip*_*an 1 python bisect

有人可以解释一下 bisect 库中的 bisect_left 函数实际上是做什么的吗?例子:

import bisect
bisect.bisect_left([1,2,3], 2)
Run Code Online (Sandbox Code Playgroud)

此代码将打印“1”。但这种印刷的规则是什么?'2' 是否插入列表中,因为根据 Python 文档,它应该“在列表中找到 x(在本例中为 2)的插入点以保持排序顺序”。请,也许有人可以提供更多示例并可以帮助我理解!谢谢你!

rhu*_*itz 9

从 开始bisect,一种用途(如此所示)是查找一个列表中的索引,该索引可用于取消引用相关列表:

from bisect import bisect

def grade(score, breakpoints=[60, 70, 80, 90], grades='FDCBA'):
    i = bisect(breakpoints, score)
    return grades[i]

grades = [grade(score) for score in [33, 99, 77, 70, 89, 90, 100]]
print(grades)
Run Code Online (Sandbox Code Playgroud)

输出:

['F', 'A', 'C', 'C', 'B', 'A', 'A']
Run Code Online (Sandbox Code Playgroud)

bisect_left操作方式与 相同,bisect但在“平局”的情况下,它将返回比赛“左侧”的索引(例如,上例中的 70 分将使用 映射到“D” bisect_left