关于python标准库中自带的二分函数bisect_left和bisect_right的笔记

bisect模块提供了bisect_left,bisect_right和bisect函数,用于在有序列表中找到合适的插入点,以保持列表排序。这些函数考虑了指定的子集范围,并支持使用key函数处理复杂数据类型的比较。它们返回的插入点将列表分为两部分,左边元素小于等于目标值,右边元素大于目标值。
摘要由CSDN通过智能技术生成

bisect.bisect_left(a, x, lo=0, hi=len(a), *, key=None)

在列表a的[lo,hi)子集块中查找第一个大于等于x的下标

参数 lohi 可以被用于确定需要考虑的子集;默认情况下整个列表都会被使用。如果 x 已经在 a 里存在,那么插入点会在已存在元素之前(也就是左边)。如果 a 是列表(list)的话,返回值是可以被放在 list.insert() 的第一个参数的。

返回的插入点 i 将数组 a 分成两半,使得 all(val < x for val in a[lo : i]) 在左半边而 all(val >= x for val in a[i : hi]) 在右半边。

key 指定带有单个参数的 key function 用来从数组的每个元素中提取比较键。 为了支持搜索复杂记录,键函数不会被应用到 x 值。

如果 key 为 None,则将直接进行元素比较而不需要中间的函数调用。

bisect.bisect_right(a, x, lo=0, hi=len(a), *, key=None)

在列表a的[lo,hi)子集块中查找第一个大于x的下标

bisect.bisect(a, x, lo=0, hi=len(a), *, key=None)

类似于 bisect_left(),但是返回的插入点是 a 中已存在元素 x 的右侧。

返回的插入点 i 将数组 a 分成两半,使得左半边为 all(val <= x for val in a[lo : i]) 而右半边为 all(val > x for val in a[i : hi])。

key 指定带有单个参数的 key function 用来从数组的每个元素中提取比较键。 为了支持搜索复杂记录,键函数不会被应用到 x 值。

如果 key 为 None,则将直接进行元素比较而不需要中间的函数调用。

参考python官网:https://docs.python.org/zh-cn/3/library/bisect.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值