用bisect来管理已排序的序列

本文介绍了Python的bisect模块,包括bisect和insert两个函数,它们基于二分查找算法在有序序列中进行查找和插入操作。bisect_right和bisect_left分别返回元素右侧和左侧的插入位置,insort则用于保持有序序列的插入。通过示例展示了如何使用这些函数进行数字表查询和有序列表插入。
摘要由CSDN通过智能技术生成

bisect模块包含两个函数,bisect和insert,两个函数都利用二分查找算法在有序序列中查找或插入元素

 

用bisect来搜索

bisect(ordered_sequence, needle)

ordered_sequence:必须是一个有序的序列

needle:指定序列中需要搜索的位置数

ordered_sequence和needle只是举栗子的位置参数,无需关注

栗子:


gg = [33, 99, 77, 70, 89, 90, 100]
print(bisect.bisect(gg, 100))

运行后的结果如下

7

从运行的结果可以看出,查找的是元素插入的索引位置并返回出来,这点要注意...

bisect函数其实是bisect_right函数的别名,就是进行了赋值操作,图片如下:

图片

再看下bisect_right函数的源码:


def insort_right(a, x, lo=0, hi=None):
    """Insert item x in list a, and keep it sorted assuming a is sorted.

    If x is already in a, insert it to the right of the rightmost x.

    Optional args lo (defa
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值