Python中的bisect库(二分查找库)用法

注意 以下所有数组都已经排序

本篇博客将主要介绍以下几个bisect库函数的用法:

1、bisect(list, num)

2、bisect_left(list, num)

3、bisect_right(list,num)

我们在数组中进行查找的时候,一般都会出现这三种情况:1、查找的数不在数组中 2、查找的数在数组中且只有一个 3、查找的数在数组中并且有多个

下面我们依次进行讨论:

查找的数不在数组中

import bisect
list1 = [1,3,5,7,9,11,11,11,11,11,13]
a = bisect.bisect(list1,6)
b = bisect.bisect_left(list1,6)
c = bisect.bisect_right(list1,6)
print(a,b,c)
# 输出为 3,3,3

此时三个函数的输出值都是一样的,输出的值都是在合适的插入点索引,使得数组有序。

 查找的数在数组中且只有一个

import bisect
list1 = [1,3,5,7,9,11,11,11,11,11,13]
a = bisect.bisect(list1,9)
b = bisect.bisect_left(list1,9)
c = bisect.bisect_right(list1,9)
print(a,b,c)
# 输出 5,4,5

bisect_left()函数的输出是num在list中的数组下标,其余两个函数的输出为组下标+1

 查找的数在数组中并且有多个

import bisect
list1 = [1,3,5,7,9,11,11,11,11,11,13]
a = bisect.bisect(list1,11)
b = bisect.bisect_left(list1,11)
c = bisect.bisect_right(list1,11)
print(a,b,c)
# 输出是 10,5,10

bisect_left()函数的输出是num在list中最左面值的数组下标,其余两个函数的输出为最右面的数组下标+1

最后补充一个二分插入函数bisect.insort()

list2 = []
bisect.insort(list2,5)
print(list2)
bisect.insort(list2,6)
print(list2)
bisect.insort(list2,1)
print(list2)
bisect.insort(list2,1)
print(list2)
bisect.insort(list2,10)
print(list2)
bisect.insort(list2,0)
print(list2)
bisect.insort(list2,3)
print(list2)
bisect.insort(list2,2)
print(list2)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值