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列表list数组array用法实例解析
Oct 28 Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
Dec 30 Python
Python3.6实现带有简单界面的有道翻译小程序
Apr 16 Python
Django文件存储 自己定制存储系统解析
Aug 02 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
Jan 20 Python
Django中从mysql数据库中获取数据传到echarts方式
Apr 07 Python
详解Python 循环嵌套
Jul 09 Python
在 Python 中使用 7zip 备份文件的操作
Dec 11 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
Jan 08 Python
Python爬虫回测股票的实例讲解
Jan 22 Python
python机器学习Github已达8.9Kstars模型解释器LIME
Nov 23 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
一条久听不愿放下的DIY森海MX500,三言两语话神奇
2021/03/02 无线电
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
javascript 自动填写表单的实现方法
2010/04/09 Javascript
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
2010/07/26 Javascript
基于jquery实现后台左侧菜单点击上下滑动显示
2013/04/11 Javascript
使用javascript创建快捷方式的简单实例
2013/08/09 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2014/08/15 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
详解react-router如何实现按需加载
2017/06/15 Javascript
Vue异步加载about组件
2017/10/31 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
JS实现留言板功能[楼层效果展示]
2017/12/27 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
2019/08/17 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
JS数组及对象遍历方法代码汇总
2020/06/16 Javascript
如何在vue-cli中使用css-loader实现css module
2021/01/07 Vue.js
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python实现ip查询示例
2014/03/26 Python
Python中的with...as用法介绍
2015/05/28 Python
Python实现PS滤镜中马赛克效果示例
2018/01/20 Python
Python基于百度AI的文字识别的示例
2018/04/21 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
python SOCKET编程基础入门
2021/02/27 Python
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
甜品店的创业计划书范文
2014/01/02 职场文书
创业计划书撰写原则
2014/01/25 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
年度考核自我鉴定
2014/03/19 职场文书