Python二分查找库bisect

找暑期实习的时候做到某厂的笔试题里面用到这个,就总结一下。。。​

1. bisect_left(a, x, lo=0, hi=len(a))

  • 功能:在已排序序列 a 中查找元素 x 应该插入的位置,并返回最左侧的插入位置(index啊)。
  • 区别:如果有多个相同元素,bisect_left 返回最左侧的插入位置。
  • 默认情况下,查找范围是整个序列 a,但可以通过 lo 和 hi 参数来限制查找范围。

2. bisect_right(a, x, lo=0, hi=len(a))

  • 功能:在已排序序列 a 中查找元素 x 应该插入的位置,并返回最右侧的插入位置。
  • 区别:如果有多个相同元素,bisect_right 返回最右侧的插入位置。
  • 默认情况下,查找范围是整个序列 a,但可以通过 lo 和 hi 参数来限制查找范围。

3. insort(a, x, lo=0, hi=len(a))

  • 功能:将元素 x 插入到序列 a 中,使得插入后的序列 a 仍然有序。
  • 插入位置由 x 应该插入以保持序列有序的位置决定,这通常是 bisect_left() 返回的索引。
  • 可以通过 lo 和 hi 参数来限制查找范围。

4. insort_right(a, x, lo=0, hi=len(a))

  • 类似于 insort(),但是插入位置由 x 应该插入以保持序列有序的最后一个位置决定,这通常是 bisect_right() 返回的索引。
  • 在处理降序排序的序列时特别有用。

区别 bisect_left() 和 bisect_right()

在对于相同元素的处理的时候,bisect_left() 返回最左侧的插入位置,bisect_right() 返回最右侧的插入位置。
比如我现在要插入元素2:
请添加图片描述

总结

bisect_left()bisect_right() 主要用于查找操作,返回的是插入位置的索引,其中 bisect_left() 返回第一个插入位置,而 bisect_right() 返回最后一个插入位置。insort()insort_right() 用于实际插入元素,insort() 在序列中插入元素时使用 bisect_left() 的返回值,而 insort_right() 使用 bisect_right() 的返回值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值