python标准库学习5 ---bisect — Array bisection algorithm

简介:


#coding=utf-8
 
import  bisect
 
list = [ 1 , 2 , 3 , 4 , 6 , 7 , 8 , 9 ]   #假定list已经排序
print  bisect.bisect_left( list , 5 #返回5应该插入的索引位置
 
print  bisect.bisect_right( list , 5 )
 
print  bisect.bisect( list , 5 )
 
bisect.insort_left( list , 5 , 0 , len ( list ))
print  list
 
bisect.insort_right( list , 5 )
print  list
 
def  index(a, x):
     'Locate the leftmost value exactly equal to x'
     i =  bisect_left(a, x)
     if  i ! =  len (a) and  a[i] = =  x:
         return  i
     raise  ValueError
 
def  find_lt(a, x):
     'Find rightmost value less than x'
     i =  bisect_left(a, x)
     if  i:
         return  a[i - 1 ]
     raise  ValueError
 
def  find_le(a, x):
     'Find rightmost value less than or equal to x'
     i =  bisect_right(a, x)
     if  i:
         return  a[i - 1 ]
     raise  ValueError
 
def  find_gt(a, x):
     'Find leftmost value greater than x'
     i =  bisect_right(a, x)
     if  i ! =  len (a):
         return  a[i]
     raise  ValueError
 
def  find_ge(a, x):
     'Find leftmost item greater than or equal to x'
     i =  bisect_left(a, x)
     if  i ! =  len (a):
         return  a[i]
raise  ValueError
 
>>> def  grade(score, breakpoints = [ 60 , 70 , 80 , 90 ], grades = 'FDCBA' ):
...     i =  bisect(breakpoints, score)
...     return  grades[i]
...
>>> [grade(score) for  score in  [ 33 , 99 , 77 , 70 , 89 , 90 , 100 ]]
[ 'F' , 'A' , 'C' , 'C' , 'B' , 'A' , 'A' ]
 
>>> data =  [( 'red' , 5 ), ( 'blue' , 1 ), ( 'yellow' , 8 ), ( 'black' , 0 )]
>>> data.sort(key = lambda  r: r[ 1 ])
>>> keys =  [r[ 1 ] for  r in  data]         # precomputed list of keys
>>> data[bisect_left(keys, 0 )]
( 'black' , 0 )
>>> data[bisect_left(keys, 1 )]
( 'blue' , 1 )
>>> data[bisect_left(keys, 5 )]
( 'red' , 5 )
>>> data[bisect_left(keys, 8 )]
( 'yellow' , 8 )

  


==============================================================================
本文转自被遗忘的博客园博客,原文链接:http://www.cnblogs.com/rollenholt/archive/2011/11/26/2264244.html,如需转载请自行联系原作者
相关文章
|
2月前
|
存储 Web App开发 前端开发
Python + Requests库爬取动态Ajax分页数据
Python + Requests库爬取动态Ajax分页数据
|
2月前
|
算法 IDE 测试技术
python学习需要注意的事项
python学习需要注意的事项
187 57
|
2月前
|
JSON 网络安全 数据格式
Python网络请求库requests使用详述
总结来说,`requests`库非常适用于需要快速、简易、可靠进行HTTP请求的应用场景,它的简洁性让开发者避免繁琐的网络代码而专注于交互逻辑本身。通过上述方式,你可以利用 `requests`处理大部分常见的HTTP请求需求。
289 51
|
1月前
|
数据采集 存储 Web App开发
Python爬虫库性能与选型实战指南:从需求到落地的全链路解析
本文深入解析Python爬虫库的性能与选型策略,涵盖需求分析、技术评估与实战案例,助你构建高效稳定的数据采集系统。
234 0
|
2月前
|
JSON 数据安全/隐私保护 数据格式
拼多多批量下单软件,拼多多无限账号下单软件,python框架仅供学习参考
完整的拼多多自动化下单框架,包含登录、搜索商品、获取商品列表、下单等功能。
|
2月前
|
机器学习/深度学习 数据安全/隐私保护 计算机视觉
过三色刷脸技术,过三色刷脸技术教程,插件过人脸python分享学习
三色刷脸技术是基于RGB三通道分离的人脸特征提取方法,通过分析人脸在不同颜色通道的特征差异
|
2月前
|
存储 监控 安全
Python剪贴板监控实战:clipboard-monitor库的深度解析与扩展应用
本文介绍如何利用Python的clipboard-monitor库实现剪贴板监控系统,涵盖文本与图片的实时监听、防重复存储、GUI界面开发及数据加密等核心技术,适用于安全审计与自动化办公场景。
95 0
|
3月前
|
JSON 数据格式 Python
解决Python requests库POST请求参数顺序问题的方法。
总之,想要在Python的requests库里保持POST参数顺序,你要像捋顺头发一样捋顺它们,在向服务器炫耀你那有条不紊的数据前。抓紧手中的 `OrderedDict`与 `json`这两把钥匙,就能向服务端展示你的请求参数就像经过高端配置的快递包裹,里面的商品摆放井井有条,任何时候开箱都是一种享受。
91 10

热门文章

最新文章

推荐镜像

更多