当前位置: 移动技术网 > IT编程>脚本编程>Python > Python 二分法(bisect模块)

Python 二分法(bisect模块)

2020年07月12日  | 移动技术网IT编程  | 我要评论

前提:

操作的列表是已排序的

 

魔术方法

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网