Python中bisect的用法


Posted in Python onSeptember 23, 2014

本文实例讲述了Python中bisect的用法,是一个比较常见的实用技巧。分享给大家供大家参考。具体分析如下:

一般来说,Python中的bisect用于操作排序的数组,比如你可以在向一个数组插入数据的同时进行排序。下面的代码演示了如何进行操作:

import bisect
import random
random.seed(1)
print('New pos contents')
print('-----------------')
l=[]
 
for i in range(1,15):
  r=random.randint(1,100)
  position=bisect.bisect(l,r)
  bisect.insort(l,r)
  print '%3d %3d'%(r,position),l

输出结果为:

New pos contents
-----------------
 14  0 [14]
 85  1 [14, 85]
 77  1 [14, 77, 85]
 26  1 [14, 26, 77, 85]
 50  2 [14, 26, 50, 77, 85]
 45  2 [14, 26, 45, 50, 77, 85]
 66  4 [14, 26, 45, 50, 66, 77, 85]
 79  6 [14, 26, 45, 50, 66, 77, 79, 85]
 10  0 [10, 14, 26, 45, 50, 66, 77, 79, 85]
 3  0 [3, 10, 14, 26, 45, 50, 66, 77, 79, 85]
 84  9 [3, 10, 14, 26, 45, 50, 66, 77, 79, 84, 85]
 44  4 [3, 10, 14, 26, 44, 45, 50, 66, 77, 79, 84, 85]
 77  9 [3, 10, 14, 26, 44, 45, 50, 66, 77, 77, 79, 84, 85]
 1  0 [1, 3, 10, 14, 26, 44, 45, 50, 66, 77, 77, 79, 84, 85]

可以看到,在插入这些随机数的时候数组同时进行了排序。不过其中有一些重复的元素,比如上面的77,77。你可以对这些重复元素的顺序进行设置,如果希望重复的元素出现在与他相同的元素左边就是用bisect_left,否则就是用bisect_right,相应的使用insort_left和insort_right。比如下面的代码,我们可以看到出现重复的元素索引变化:

import bisect
import random
random.seed(1)
print('New pos contents')
print('-----------------')
l=[]
 
for i in range(1,15):
  r=random.randint(1,100)
  position=bisect.bisect_left(l,r)
  bisect.insort_left(l,r)
  print '%3d %3d'%(r,position),l

输出结果为:

New pos contents
-----------------
 14  0 [14]
 85  1 [14, 85]
 77  1 [14, 77, 85]
 26  1 [14, 26, 77, 85]
 50  2 [14, 26, 50, 77, 85]
 45  2 [14, 26, 45, 50, 77, 85]
 66  4 [14, 26, 45, 50, 66, 77, 85]
 79  6 [14, 26, 45, 50, 66, 77, 79, 85]
 10  0 [10, 14, 26, 45, 50, 66, 77, 79, 85]
 3  0 [3, 10, 14, 26, 45, 50, 66, 77, 79, 85]
 84  9 [3, 10, 14, 26, 45, 50, 66, 77, 79, 84, 85]
 44  4 [3, 10, 14, 26, 44, 45, 50, 66, 77, 79, 84, 85]
 77  8 [3, 10, 14, 26, 44, 45, 50, 66, 77, 77, 79, 84, 85]
 1  0 [1, 3, 10, 14, 26, 44, 45, 50, 66, 77, 77, 79, 84, 85]

此函数bisect.bisect(list,key) ,犹如java里的TreeMap的tailMap(fromkey)。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python之import机制详解
Jul 03 Python
Python切片用法实例教程
Sep 08 Python
python实现通过pil模块对图片格式进行转换的方法
Mar 24 Python
django创建自定义模板处理器的实例详解
Aug 14 Python
python操作redis方法总结
Jun 06 Python
Python列表切片操作实例总结
Feb 19 Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 Python
python 类之间的参数传递方式
Dec 20 Python
pycharm的python_stubs问题
Apr 08 Python
宝塔面板成功部署Django项目流程(图文)
Jun 22 Python
matplotlib基础绘图命令之imshow的使用
Aug 13 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
Nov 20 Python
python元组操作实例解析
Sep 23 #Python
Python中实现两个字典(dict)合并的方法
Sep 23 #Python
python实现去除下载电影和电视剧文件名中的多余字符的方法
Sep 23 #Python
Python中的类学习笔记
Sep 23 #Python
Python函数嵌套实例
Sep 23 #Python
Python中的自定义函数学习笔记
Sep 23 #Python
Python中的exec、eval使用实例
Sep 23 #Python
You might like
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
用PHP的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
thinkphp实现数组分页示例
2014/04/13 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
2014/07/25 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
js删除所有的cookie的代码
2010/11/25 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
玩转方法:call和apply
2014/05/08 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
2017/12/25 jQuery
js中自定义react数据验证组件实例详解
2018/10/19 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
python计算最大优先级队列实例
2013/12/18 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
python中的不可变数据类型与可变数据类型详解
2018/09/16 Python
利用Python实现原创工具的Logo与Help
2018/12/03 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
Django用户认证系统 User对象解析
2019/08/02 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
canvas使用注意点总结
2013/07/19 HTML / CSS
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
经济系大学生求职信
2013/10/01 职场文书
个人委托书范本
2014/09/13 职场文书
九一八事变演讲稿范文
2014/09/14 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
Python Pandas pandas.read_sql_query函数实例用法分析
2021/06/21 Python