南强小屋 Design By 杰米
1. 模块介绍
1. bisect模块为内置标准库,它实现了二分法查找算法(只要提到二分法查找,应该优先想到此模块)
2. 主要包含有两个函数:bisect函数(查找元素)和insort函数(插入元素)。
2. 常用方法介绍
场景1:已知一个有序列表,查找目标元素的位置索引
import bisect # 已知一个有序序列 ordered_list = [23, 34, 59, 78, 99] des_element = 21 res = bisect.bisect(ordered_list, des_element) print(res) # res: 0 des_element = 35 res = bisect.bisect(ordered_list, des_element) print(res) # res: 2
说明:bisect函数会默认返回右侧的位置索引,同时bisect函数是bisect_right函数的别名。
场景2:已知一个有序列表,其中列表中有重复元素,查找目标元素的位置索引
import bisect # 已知一个有序序列 ordered_list = [23, 34, 34, 59, 78, 99] # bisect函数默认返回右侧的位置索引 des_element = 34 res = bisect.bisect(ordered_list, des_element) print(res) # res: 3 # bisect函数为bisect_right函数的别名 des_element = 34 res = bisect.bisect_right(ordered_list, des_element) print(res) # res: 3 # bisect_left函数默认返回左侧的位置索引 des_element = 34 res = bisect.bisect_left(ordered_list, des_element) print(res) # res: 1
说明:如果目标元素会在已知有序列表中多次出现,那么目标元素从已知有序列表的左侧或右侧插入时结果是不同的。
3. 场景应用
场景1:替代if-elif语句,例如:判断考生成绩所属的等级问题。
''' 考试成绩的档位划分,共分为5个等级: 1. F等级:[0, 60) 2. D等级:[60, 70) 3. C等级:[70, 80) 4. B等级:[80, 90) 5. A等级:[90, 100] ''' import bisect def get_result(score: (int, float), score_nodes: list = [60, 70, 80, 90], ranks='FDCBA') -> str: # 校验:分数范围 if score < 0 or score >100: return "score的取值范围:0-100" # 边界点考虑 if int(score) == 100: return "A" loc_index = bisect.bisect(score_nodes, score) return ranks[loc_index] print(get_result(50)) # res: F print(get_result(60)) # res: D print(get_result(85.5)) # res: B print(get_result(100)) # res: A
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
python,bisect模块
南强小屋 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
南强小屋 Design By 杰米
暂无Python bisect模块原理及常见实例的评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。