Python对分左

2024-05-21 01:09:55 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能给我解释一下二分法库中的二分法左函数实际上是做什么的吗?例如:

import bisect
bisect.bisect_left([1,2,3], 2)

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


Tags: 函数代码文档定位import列表排序顺序
2条回答

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”)

对分按排序顺序维护列表。如果在列表中插入项目,列表仍保持其顺序

由于您的列表已排序, 对分。对分_left([1,2,3],2)将在列表中的2之后插入项目2(因为项目2已存在于列表中)

您可以在此处找到有关“对分”模块的更多信息:

https://docs.python.org/3/library/bisect.html

相关问题 更多 >