Python-算法扩展:bisect模块

Python-算法扩展:bisect模块

Python bisect模块用于有序列表的插值

>>返回Python系列文章目录<<

1 bisect模块(内置库)

bisect模块实现了 二分 (bisection) 算法 的模块,能够 保持序列 sequence 顺序不变 的情况下对其进行 二分查找和插入,适合用于降低对冗长序列查找的时间成本

左侧插入点:元素elem在序列sequence合适的插入点,如果序列中已存在,则放在相同元素的左侧

右侧插入点:元素elem在序列sequence合适的插入点,如果序列中已存在,则放在相同元素的右侧

bisect模块 说明
bisect_left(sequence, elem)-> index 返回elem在sequence中左侧插入点的index
bisect_right(sequence, elem)-> index 返回elem在sequence中右侧插入点的index
bisect() bisect_right()
insort_left(sequence, elem)-> index 查找目标元素左侧插入点,并插入元素,直接修改原序列
insort_right(sequence, elem)-> index 查找目标元素右侧插入点,并插入元素,直接修改原序列
insort() insort_right()

1.1 示例:按成绩评分


from bisect import *

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

ret = [grade(score) for score in [33, 99, 77, 70, 89, 90, 100]]  # 列表解析式 按成绩划分等级

>>>['F', 'A', 'C', 'C', 'B', 'A', 'A']
上一篇:C语言数据结构_动态顺序表实例分析


下一篇:顺序表的构建(2)不定长顺序表