博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python标准库学习5 ---bisect — Array bisection algorithm
阅读量:6229 次
发布时间:2019-06-21

本文共 1755 字,大约阅读时间需要 5 分钟。

#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,如需转载请自行联系原作者
你可能感兴趣的文章
hibernate执行过程
查看>>
C++专题(一)
查看>>
博客园。侧边公告代码
查看>>
[codevs3118]高精度除法<高精度>
查看>>
学JS的心路历程-闭包closure
查看>>
本周总结
查看>>
苹果企业账号申请
查看>>
Problem O
查看>>
胜利大逃亡
查看>>
畅通工程(并查集找根节点)
查看>>
【工具使用】sublime text3
查看>>
SQL Server查询优化器的工作原理
查看>>
关于成长的一点碎碎念
查看>>
java生成指定范围的随机数
查看>>
Easy ui Datagrid(下拉、复选、只输入数字、文本) 追加、删除、更改
查看>>
20145209刘一阳 《网络对抗》逆向及BOF基础实践
查看>>
Groovy's dynamic mixin
查看>>
2018.10.27-dtoj-3996-Lesson5!(johnny)
查看>>
LCLFramework框架之数据门户
查看>>
python基础-----集合(在我的世界你是唯一)
查看>>