Python中的bisect模块

Python的bisect模块用于在保持列表有序的情况下插入元素,避免重新排序。主要包含bisect_left、bisect_right、bisect以及insort_left、insort_right、insort六个函数。这些函数根据插入元素和列表中已有元素的关系,找到合适的插入点并返回,insort系列函数还会直接进行插入操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python中的bisect模块可以在列表插入元素之后维持列表的有序状态,而不需要重新对列表排序。bisect有以下6个函数,这6个函数接受相同的参数:

  • bisect.bisect_left(a, x, lo=0, hi=len(a)):a是列表,x是要插入的元素。函数返回在a中插入x的位置,如果a中已经存x,那么插入的位置在a中最左边的x的前面一位。返回值把列表分成两部分,插入点左侧满足all(val < x for val in a[lo:i]),插入点右侧满足all(val >= x for val in a[i:hi])
  • bisect.bisect_right(a, x, lo=0, hi=len(a)):与bisect.bisect_left的不同点在于,如果a中已经存x,那么插入的位置在a中最右边的x的后面一位。
  • bisect.bisect(a, x, lo=0, hi=len(a)):与bisect.bisect_right相同。返回值把列表分成两部分,插入点左侧满足all(val <= x for val in a[lo:i+1]),插入点右侧满足all(val > x for val in a[i+1:hi])
  • bisect.insort_left(a, x, lo=0, hi=len(a)):返回插入元素后的列表。先使用bisect.bisect_left获得插入元素的位置,然后在该位置插入元素并返回列表。等价于a.insert(bisect.bisect_left(a, x, lo, hi), x)
  • bisect.insort_right(a, x, lo=0, hi=len(a)):等价于a.insert(bisect.bisect_right(a, x, lo, hi), x)
  • bisect.insort(a, x, lo=0, hi=len(a)):等价于a.insert(bisect.bisect(a, x, lo, hi), x)

举例:

li = [1, 3, 5, 7, 9]
print(bisect.bisect_left(li, 6))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值