python排序模块:bisect
今天在刷leetcode的时候遇到了一道题,981. 基于时间的键值存储,用到了bisect的函数,在这里简单介绍一下:
还有一个排序是sort和sorted,这里不做介绍
在这道题中默认升序,也就是有序,所以才可以使用bisect库,因为有序是使用bisect的前提条件
- insort函数
data = [2, 3, 4, 5]
bisect.insort(data, 6)
print(data)
output:
[2, 3, 4, 5, 6]
可见插入的数不会影响原来的排序
- bisect函数
s = bisect.bisect(data, 1)
print(s)
print(data)
output:
0
[2, 3, 4, 5, 6]
获取插入数值的位置并返回,但并不会插入
- bisect_left函数和bisect_right函数
left = bisect.bisect_left(data, 4)
print(left)
print(data)
right= bisect.bisect_right(data, 4)
print(right)
print(data)
output:
2
[2, 3, 4, 5, 6]
3
[2, 3, 4, 5, 6]
主要用来处理重复值的情况,返回插入的位置,和bisect函数一样不会改变原来的函数
- insort_left函数insort_right函数
left = bisect.insort_left(data, 4)
print(left)
print(data)
data = [2, 3, 4, 5, 6]
right= bisect.insort_right(data, 4)
print(right)
print(data)
output:
2
[2, 3, 4, 4, 5, 6]
3
[2, 3, 4, 4, 5, 6]
这两个函数会改变原来函数,其实从data结果来看,如果在插入重复数值的时候,insort_left函数insort_right函数都对data进行了相同的处理,只是插入位置不同而已。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix