python bisect模块

Python bisect 模块:二分查找

在处理有序数据集合时,二分查找是一种非常高效的搜索算法。Python 的 bisect 模块提供了二分查找算法的实现,帮助我们快速定位元素在有序列表中的位置,以及在保持列表有序的前提下插入新元素。

bisect 模块概览

bisect 模块包含以下主要功能:

  • bisect_left: 返回元素应该插入到列表中的索引位置,以便列表保持有序。
  • bisect_right: 类似于 bisect_left,但返回插入点的右侧位置。
  • insort_left: 在列表中插入元素,使用 bisect_left 确定插入位置。
  • insort_right: 在列表中插入元素,使用 bisect_right 确定插入位置。

安装与导入

bisect 是 Python 的标准库之一,无需额外安装。使用时只需导入模块:

import bisect

示例:

bisect_leftbisect_right

假设我们有一个已排序的整数列表:

sorted_list = [1, 2, 4, 5, 6, 8]

使用 bisect_leftbisect_right 查找数字 4 的插入位置:

# 查找元素4的左侧插入位置
left_index = bisect.bisect_left(sorted_list, 4)
print(f"左侧插入位置: {left_index}")  # 输出: 2

# 查找元素4的右侧插入位置
right_index = bisect.bisect_right(sorted_list, 4)
print(f"右侧插入位置: {right_index}")  # 输出: 3

因为列表中已经存在了4,所以两个方法返回的是不同的值,分别是4的左右两边,如果插入的是不存在的值,那么两个方法返回的一样的结果


insort_leftinsort_right

在列表中插入数字 3 并保持有序:

# 使用 insort_left 插入元素
bisect.insort_left(sorted_list, 3)
print(f"使用 insort_left 后的列表: {sorted_list}")
# [1, 2, 3, 4, 5, 6, 8]
# 使用 insort_right 插入元素
bisect.insort_right(sorted_list, 3)
print(f"使用 insort_right 后的列表: {sorted_list}")
# [1, 2, 3, 3, 4, 5, 6, 8]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星眺北海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值