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利用elaphe制作二维条形码实现代码
May 25 Python
Python中字符编码简介、方法及使用建议
Jan 08 Python
Python生成器(Generator)详解
Apr 13 Python
Python基于有道实现英汉字典功能
Jul 25 Python
举例讲解Python编程中对线程锁的使用
Jul 12 Python
详解Tensorflow数据读取有三种方式(next_batch)
Feb 01 Python
高效使用Python字典的清单
Apr 04 Python
Django stark组件使用及原理详解
Aug 22 Python
Python3批量移动指定文件到指定文件夹方法示例
Sep 02 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
Feb 26 Python
Django之choices选项和富文本编辑器的使用详解
Apr 01 Python
Python变量及数据类型用法原理汇总
Aug 06 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 快速配置方法
2009/05/11 PHP
PHP合并数组+与array_merge的区别分析
2010/08/01 PHP
简单的php写入数据库类代码分享
2011/07/26 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
vue中的mvvm模式讲解
2019/01/31 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
python定时关机小脚本
2018/06/20 Python
Python从单元素字典中获取key和value的实例
2018/12/31 Python
pyqt5之将textBrowser的内容写入txt文档的方法
2019/06/21 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
pygame实现成语填空游戏
2019/10/29 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
解决json中ensure_ascii=False的问题
2020/04/03 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
如何用 Python 制作一个迷宫游戏
2021/02/25 Python
旅游管理毕业生自荐信
2013/11/05 职场文书
运动会入场词60字
2014/02/15 职场文书
社区健康教育工作方案
2014/06/03 职场文书
关于感恩的演讲稿800字
2014/08/26 职场文书
2014年依法行政工作总结
2014/11/19 职场文书
团代会开幕词
2015/01/28 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
谢师宴家长致辞
2015/07/27 职场文书
生日宴会祝酒词
2015/08/10 职场文书
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS