python排序模块:bisect

今天在刷leetcode的时候遇到了一道题,981. 基于时间的键值存储,用到了bisect的函数,在这里简单介绍一下:

还有一个排序是sort和sorted,这里不做介绍

在这道题中默认升序,也就是有序,所以才可以使用bisect库,因为有序是使用bisect的前提条件

  1. insort函数
data = [2, 3, 4, 5]
bisect.insort(data, 6)
print(data)
output:
[2, 3, 4, 5, 6]

可见插入的数不会影响原来的排序

  1. bisect函数
s = bisect.bisect(data, 1)
print(s)
print(data)
output:
0
[2, 3, 4, 5, 6]

获取插入数值的位置并返回,但并不会插入

  1. 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函数一样不会改变原来的函数

  1. 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进行了相同的处理,只是插入位置不同而已。

posted @   小Aer  阅读(13)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示