Python 二分法(bisect模块)

2022-08-07,,

前提:

操作的列表是已排序的

 

魔术方法

In [2]: dir(bisect)
[
 '__builtins__',
 '__doc__',
 '__file__',
 '__name__',
 '__package__',
 'bisect',        # 返回将会插入的位置,默认最右边的 
 'bisect_left',   # 返回将会插入的位置,如果有相同元素返回最左边的
 'bisect_right',  # 返回将会插入的位置,如果有相同元素返回最右边的
 'insort',       #  插入元素
 'insort_left',  #  插入元素,如果有相同元素在左边插入
 'insort_right'  #  插入元素,如果有相同元素在右边插入
]

返回插入元素下标

In [9]: data
Out[9]: [2, 3, 3, 4, 7, 9]

In [10]: bisect.bisect(data,3)    # 默认最右边
Out[10]: 3

In [11]: bisect.bisect_left(data,3)   # 返回将会插入的位置,如果有相同元素返回最左边的
Out[11]: 1

In [12]: bisect.bisect_right(data,3)   # 返回将会插入的位置,如果有相同元素返回最右边的
Out[12]: 3

插入元素

In [5]: data
Out[5]: [2, 3, 4, 7, 9]


In [6]: bisect.insort_left(data,3)  #  插入元素,如果有相同元素在左边插入

In [7]: data
Out[7]: [2, 3, 3, 4, 7, 9]

In [6]: bisect.insort_right(data,3)  #  插入元素,如果有相同元素在右边插入

In [7]: data
Out[7]: [2, 3, 3, 3, 4, 7, 9]

 

本文地址:https://blog.csdn.net/weixin_43692357/article/details/107286742

《Python 二分法(bisect模块).doc》

下载本文的Word格式文档,以方便收藏与打印。