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中的输入和输出功能进行读取和写入的教程
Apr 14 Python
详解Django框架中用context来解析模板的方法
Jul 20 Python
浅谈Python 集合(set)类型的操作——并交差
Jun 30 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
Jul 26 Python
详解如何为eclipse安装合适版本的python插件pydev
Nov 04 Python
Python Django基础二之URL路由系统
Jul 18 Python
Python tkinter和exe打包的方法
Feb 05 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
Apr 22 Python
python将logging模块封装成单独模块并实现动态切换Level方式
May 12 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
Python3+Flask安装使用教程详解
Feb 16 Python
Django框架中模型的用法
Jun 10 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
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
PHP的error_reporting错误级别变量对照表
2014/07/08 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
2014/11/04 PHP
smarty中post用法实例
2014/11/28 PHP
php强制更新图片缓存的方法
2015/02/11 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
jQuery 事件队列调整方法
2009/09/18 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
JavaScript时间转换处理函数
2015/04/14 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
2015/12/20 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
微信小程序 动态传参实例详解
2017/04/27 Javascript
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
Python实现备份文件实例
2014/09/16 Python
关于numpy中np.nonzero()函数用法的详解
2017/02/07 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
django 环境变量配置过程详解
2019/08/06 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
Django正则URL匹配实现流程解析
2020/11/13 Python
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
经典而简洁的婚礼主持词
2014/03/13 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
整改落实自查报告
2014/11/05 职场文书
经费申请报告范文
2015/05/18 职场文书
用Python将GIF动图分解成多张静态图片
2021/06/11 Python
python中pymysql包操作数据库方法
2022/04/19 Python