查找位置:bisect(array,new_item)
import bisect
a = [1, 2, 4, 8, 12, 14, 19]
item = 13
position = bisect.bisect(a, item)
print(position) # 如果放到有序序列中,应该存在的索引位置
# 使用列表的insert方法插入对应位置
a.insert(position, item)
print(a)
结果: 5 [1, 2, 4, 8, 12, 13, 14, 19]
有序插入:insort(array,new_item) 注意是insort不是insert
a = [1, 2, 4, 8, 12, 14, 19]
item = 13
bisect.insort(a, item) # 直接对列表有序插入,(无返回值)
print(a)
结果: [1, 2, 4, 8, 12, 13, 14, 19]
bisect还有bisect_left,insort_left的用法,和不带left的用法的区别是:当插入的元素和序列中的某一个元素相同时,该插入到该元素的前面(左边,left),还是后面(右边);
列举一个应用:
根据一个分数,得到他的成绩。
import bisect
def get_score_level(score, scores=(60, 70, 80, 90), grades="EDCBA"):
position = bisect.bisect(scores, score)
return grades[position]
print(get_score_level(65))