当前位置:   article > 正文

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

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

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

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

1、bisect(list, num)

2、bisect_left(list, num)

3、bisect_right(list,num)

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

下面我们依次进行讨论:

查找的数不在数组中

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

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

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

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

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

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

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

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

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

  1. list2 = []
  2. bisect.insort(list2,5)
  3. print(list2)
  4. bisect.insort(list2,6)
  5. print(list2)
  6. bisect.insort(list2,1)
  7. print(list2)
  8. bisect.insort(list2,1)
  9. print(list2)
  10. bisect.insort(list2,10)
  11. print(list2)
  12. bisect.insort(list2,0)
  13. print(list2)
  14. bisect.insort(list2,3)
  15. print(list2)
  16. bisect.insort(list2,2)
  17. print(list2)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/177544?site
推荐阅读
相关标签
  

闽ICP备14008679号