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 )

  

目录
相关文章
|
Java API 开发者
在Spring Boot中集成Swagger API文档
在Spring Boot中集成Swagger API文档
|
8月前
|
JSON 监控 小程序
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
959 14
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
vs code常见的查找快捷键大全
【11月更文挑战第1天】本文介绍了 VS Code 中的基本查找和替换操作,包括在当前文件中查找(Ctrl + F)、查找替换(Ctrl + H)、查找下一个(F3)和查找上一个(Shift + F3)。还涵盖了在多个文件中查找(Ctrl + Shift + F)和查找替换(Ctrl + Shift + H),以及符号查找相关操作,如转到符号(Ctrl + T)和在文件中查找符号(Ctrl + Shift + O)。这些快捷键和功能帮助用户高效地管理和编辑代码。
2459 2
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
734 0
|
自然语言处理 Java 测试技术
使用PostMan请求阿里云通义千问大模型
本文介绍如果通过postman调用阿里云通义千问API,然后介绍如果使用多语言集成,最后介绍了快速使用postman压测创建的API请求。
4190 2
|
机器学习/深度学习 算法 网络架构
神经网络架构殊途同归?ICML 2024论文:模型不同,但学习内容相同
【8月更文挑战第3天】《神经语言模型的缩放定律》由OpenAI研究人员完成并在ICML 2024发表。研究揭示了模型性能与大小、数据集及计算资源间的幂律关系,表明增大任一资源均可预测地提升性能。此外,论文指出模型宽度与深度对性能影响较小,较大模型在更多数据上训练能更好泛化,且能高效利用计算资源。研究提供了训练策略建议,对于神经语言模型优化意义重大,但也存在局限性,需进一步探索。论文链接:[https://arxiv.org/abs/2001.08361]。
300 1
|
网络性能优化 数据安全/隐私保护 网络虚拟化
|
存储 弹性计算 缓存
小公司或个人用户如何选择阿里云服务器?
小公司或个人用户如何选择阿里云服务器?
1635 0
小公司或个人用户如何选择阿里云服务器?