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)

Python中的bisect库(二分查找库)用法_第1张图片

 

你可能感兴趣的:(Python技能库,python)