Python学习笔记:bisect模块实现二分搜索
在Python中可以利用bisect模块来实现二分搜索,该模块包含函数只有几个:

import bisect L = [1,3,4,5,5,5,8,10]
x = 5 bisect.bisect_left(L,x) #
# 在L中查找x,x存在时返回x最左侧的位置,x不存在返回应该插入的位置 bisect.bisect_right(L,x) #
# 在L中查找x,x存在时返回x最右侧的位置,x不存在返回应该插入的位置 bisect.insort_left(L,x) # [1, 3, 4, 5, 5, 5, 5, 8, 10]
# 将x插入到列表L中,x存在时插入在左侧 bisect.insort_right(L,x) # [1, 3, 4, 5, 5, 5, 5, 5, 8, 10]
# 将x插入到列表L中,x存在时插入在右侧
bisect.insort_left和bisect.insort_right貌似没什么差别,作用基本一致。
另外,bisect.bisect(L,x)与bisect_right相同,insort与insort_right相同。
例子:
import bisect
import random mylist = list()
for i in range(10):
num = random.randint(1,100)
index = bisect.bisect_left(mylist, num)
bisect.insort_left(mylist, num)
print('num ', str(num), 'index ', str(index), 'list ', mylist) mylist = list()
for i in range(10):
num = random.randint(1,100)
index = bisect.bisect_right(mylist, num)
bisect.insort_right(mylist, num)
print('num ', str(num), '\tindex ', str(index), '\tlist ' ,mylist)
输出:
num 72 index 0 list [72]
num 89 index 1 list [72, 89]
num 41 index 0 list [41, 72, 89]
num 45 index 1 list [41, 45, 72, 89]
num 100 index 4 list [41, 45, 72, 89, 100]
num 1 index 0 list [1, 41, 45, 72, 89, 100]
num 69 index 3 list [1, 41, 45, 69, 72, 89, 100]
num 4 index 1 list [1, 4, 41, 45, 69, 72, 89, 100]
num 76 index 6 list [1, 4, 41, 45, 69, 72, 76, 89, 100]
num 11 index 2 list [1, 4, 11, 41, 45, 69, 72, 76, 89, 100] num 82 index 0 list [82]
num 39 index 0 list [39, 82]
num 27 index 0 list [27, 39, 82]
num 78 index 2 list [27, 39, 78, 82]
num 9 index 0 list [9, 27, 39, 78, 82]
num 80 index 4 list [9, 27, 39, 78, 80, 82]
num 58 index 3 list [9, 27, 39, 58, 78, 80, 82]
num 42 index 3 list [9, 27, 39, 42, 58, 78, 80, 82]
num 59 index 5 list [9, 27, 39, 42, 58, 59, 78, 80, 82]
num 50 index 4 list [9, 27, 39, 42, 50, 58, 59, 78, 80, 82]
END 2018-11-01 23:25:37
Python学习笔记:bisect模块实现二分搜索的更多相关文章
- Python学习笔记之模块与包
一.模块 1.模块的概念 模块这一概念很大程度上是为了解决代码的可重用性而出现的,其实这一概念并没有多复杂,简单来说不过是一个后缀为 .py 的 Python 文件而已 例如,我在某个工作中经常需要打 ...
- Python学习笔记—itertools模块
这篇是看wklken的<Python进阶-Itertools模块小结> 学习itertools模块的学习笔记 在看itertools中各函数的源代码时,刚开始还比较轻松,但后面看起来就比较 ...
- python学习笔记_week5_模块
模块 一.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能), 本质就是.py结尾的python文件(文件名:test.py,对应模块名:test) 包:用来从逻辑上 ...
- python学习笔记(八)-模块
大型python程序以模块和包的形式组织.python标准库中包含大量的模块.一个python文件就是一个模块.1.标准模块 python自带的,不需要你安装的2.第三方模块 需要安装,别人提供的. ...
- Python学习笔记-常用模块
1.python模块 如果你退出 Python 解释器并重新进入,你做的任何定义(变量和方法)都会丢失.因此,如果你想要编写一些更大的程序,为准备解释器输入使用一个文本编辑器会更好,并以那个文件替代作 ...
- Python学习笔记1—模块
模块的使用 引用模块的两种形式 形式一: import module_name 形式二: from module1 import module11 (module11是module的子模块) 例: ...
- Python学习笔记2——模块的发布
1.为模块nester创建文件夹nester,其中包含:nester.py(模块文件): """这是"nester.py"模块,提供了一个名为prin ...
- python学习笔记十——模块与函数
第五章 模块与函数 5.1 python程序的结构 函数+类->模块 模块+模块->包 函数+类+模块+包=Python pyth ...
- Python学习笔记14—模块
在python中所有的模块都被加入到了sys.path中,用下面的方法可以看见模块的位置. >>> import sys >>> import pprint > ...
- python学习笔记:模块——自定义模块的3种导入方式
一.定义 模块就是用一堆的代码实现了一些功能的代码的集合,通常一个或者多个函数写在一个.py文件里,而如果有些功能实现起来很复杂,那么就需要创建n个.py文件,这n个.py文件的集合就是模块.如果不懂 ...
随机推荐
- Xpath语法与lxml库的用法
BeautifulSoup 已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法. 1.安装 pip install lxml 2 ...
- Ansible4:Ad-hoc与命令执行模块
目录 Ad-hoc 命令说明 后台执行 命令执行模块 command模块 script模块 Ad-Hoc 是指ansible下临时执行的一条命令,并且不需要保存的命令,对于复杂的命令会使用playbo ...
- Python入门 语法
Python入门 语法 语言介绍 对象,类型,值 编码规范 https://www.python.org/dev/peps/pep-0008/ 一.语言介绍 编程语言: 机器语言,汇编语言,高级语言 ...
- P3014 [USACO11FEB]牛线Cow Line && 康托展开
康托展开 康托展开为全排列到一个自然数的映射, 空间压缩效率很高. 简单来说, 康托展开就是一个全排列在所有此序列全排列字典序中的第 \(k\) 大, 这个 \(k\) 即是次全排列的康托展开. 康托 ...
- element ui 上传文件,读取内容乱码解决
element ui 上传文件,读取内容乱码解决: 加第二个参数 reader.readAsText(file.raw,'gb2312'); <el-upload class="upl ...
- 蓝桥杯 地宫寻宝 DFS 动态规划
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> #include <cstdl ...
- Java并发编程原理与实战二十九:Exchanger
一.简介 前面三篇博客分别介绍了CyclicBarrier.CountDownLatch.Semaphore,现在介绍并发工具类中的最后一个Exchange.Exchange是最简单的也是最复杂的,简 ...
- async-lock模块理解
在Appium1.7.1里集成了一个同步模块async-lock用来支持多会话功能. 只能说就算是以单线程高并发闻名的I/O密集型Nodejs也不得不扩展额外的同步块方法,或者说,在现有的计算机体系结 ...
- why inline functions must be put in header files?
[why inline functions must be put in header files?] 编译中有2个过程:compile.link.先进行compile,compile中把源代码编译成 ...
- bzoj 1044 [HAOI2008]木棍分割(二分+贪心,DP+优化)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1044 [题意] n根木棍拼到一起,最多可以切m刀,问切成后最大段的最小值及其方案数. ...