Python中bisect的使用
2024-10-19 03:33:56
在<Think Python>中第十章的练习中,涉及到了分半查找的bisect模块。为此,在网上查阅了Python中bisect模块的相关内容。有几个链接相对权威和明白:
1> http://docs.python.org/2/library/bisect.html
2> http://www.cnblogs.com/skydesign/archive/2011/09/02/2163592.html
这里,就我有疑问的地方做个记录:
第一,bisect模块中的函数都有哪些用途。根据Python网站的参考手册,这个模块的主要用途是运用Bisection Algorithm(分半算法)在已序的列表中进行查找和插入操作。练习中使用了bisect_left(a,x)函数,这个函数给出了x元素在列表a的位置(如果x在列表中已经存在,这时给出最左元素)。当然,对应的还有bisect_right()函数。模块中也提供了插入操作insort_left(a,x)和insort_right(a,x)。其中,insort_left(a,x)的操作等同于a.insert(bisect.bisect_left(a,x),x)。
第二,对于Allen给出的练习代码中,if判断句如何理解。经过思考,发现经过分半查找之后,下表i可能会等于len(word_list),比如元素x大于列表中的所有元素的情况。鉴于此,就需要用条件控制一下。这样,代码中的两个条件就能正确描述查找成功的情况(注意,查找失败的情况下,下表i也将停在0~len(list)的某个值上)。
i = bisect_left(word_list, word)
if i != len(word_list) and word_list[i] == word:
return True
else:
return False
最新文章
- golang调用c++文件
- jQuery.attr() 函数详解
- 如何利用tomcat搭建一个动态服务器
- bzoj1297: [SCOI2009]迷路
- selenium python 环境搭建
- 关于在VMware上装lFEDORA系统
- JavaScript MVC 框架[转载]
- windows下安装apache笔记
- ASIHTTPRequest中的DELETE、PUT、GET、POST请求实例-备用
- 用于辅助在 bootstrap-dialog 中的表现:app-jquery-dialog.js
- 【原】无脑操作:Windows 10 + MySQL 5.5 安装使用及免安装使用
- jQuery对于动态生成的元素绑定无效的问题~~
- 【2】学习C++之引用
- python使用urllib2 http 下载参数的try catch
- Gitlab安装、汉化及使用
- 分布式系统监视zabbix讲解四之可视化--技术流ken
- ubuntu14.04 VIM for python 一键配置
- 报错:[__NSArrayI objectAtIndex:]: index 5 beyond bounds [0 .. 4]&#39;
- OCP 062大量考试新题(2019年)-12
- 【转】Java工程师成神之路
热门文章
- Django URLs error: view must be a callable or a list/tuple in the case of include()
- bootstrap3文章
- StringBuffer 去掉最后一个字符
- iOS 使用代码创建约束,实现自动布局
- iOS4.0及以上系统,关闭程序,applicationWillTerminate为调用问题解决
- Git项目下载部分文件或文件夹
- 【BZOJ3551】 [ONTAK2010]Peaks加强版
- 【问题解决方案】Keras手写数字识别-ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接
- [转]高端又易学的vbs表白程序了解一下
- 转---30 分钟学会 Flex 布局