有人可以解释一下 bisect 库中的 bisect_left 函数实际上是做什么的吗?例子:
import bisect
bisect.bisect_left([1,2,3], 2)
Run Code Online (Sandbox Code Playgroud)
此代码将打印“1”。但这种印刷的规则是什么?'2' 是否插入列表中,因为根据 Python 文档,它应该“在列表中找到 x(在本例中为 2)的插入点以保持排序顺序”。请,也许有人可以提供更多示例并可以帮助我理解!谢谢你!
从 开始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)