谁能给我解释一下二等分库中的bisect_left函数到底做了什么?示例:
import bisect
bisect.bisect_left([1,2,3], 2)此代码将打印“1”。但是这种打印的规则是什么呢?在列表中插入'2‘,因为根据Python文档,它应该“在列表中定位x的插入点(在本例中为2),以保持排序的顺序”。请,也许有人可以提供更多的例子,可以帮助我理解!谢谢!
发布于 2021-02-18 04:21:28
从bisect开始,一个用途(如here所示)是在一个列表中查找索引,该索引可用于取消对相关列表的引用:
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)输出:
['F', 'A', 'C', 'C', 'B', 'A', 'A']bisect_left的操作方式与bisect相同,但在“平局”的情况下,它会将索引返回到匹配的“左侧”(例如,上面示例中的70分将使用bisect_left映射到"D“)
发布于 2021-02-18 04:16:01
二等分按排序顺序维护一个列表。如果将项目插入到列表中,列表仍保持其顺序。
由于您的列表已经排序,因此bisect.bisect_left(1,2,3,2)将在列表中的2之后插入项2(因为项2已经存在于列表中)。
你可以在这里找到更多关于“二等分”模块的信息:
https://stackoverflow.com/questions/66249194
复制相似问题