python 二分查找模块和有序容器模块

python中二分查找模块为bisect模块,其中只有几个函数:

x_insert_point = bisect.bisect_left(L,x)
在有序列表或者是容器L中查找x左侧的位置,若是不存在则返回应该插入的位置
x_insert_point = bisect.bisect_right(L,x)
在有序列表或者是容器L中查找x右侧的位置,若是不存在则返回应该插入的位置
x_insert_poin = bisect.insort_left(L,x)
将x插入到有序列表中,若列表中存在,则插入到其左侧
x_insert_poin = bisect.insort_right(L,x)
将x插入到有序列表中,若列表中存在,测插入到其右侧

python有序容器sortedcontainers:

主要包括SortedList、SortedDict、SortedSet三个实现类型,可以实现列表、词典、Set去重集合的去重,SortedSet相当于C++中的Set,SortedDict相当于map,基于红黑树实现,可以实现快速查找。
SortedSet常用方法:
Add():添加元素,
pop():删除元素
remove():移除某指定元素
count():计数
index():返回某元素索引等
bisect_left(val):返回小于等于某元素的最左边的值,同bisect模块中的一致
bisect_right(val):返回大于等于某元素的最右边的值,同bisect模块中的一致
update(可迭代对象):在原数组中,从可迭代对象中更新元素,返回其自身
union(可迭代对象):在原数组中,从可迭代对象中合并元素生成一个新的集合
SortedList常用方法同SortedSet一致
SortedDict()中有peekitem(index=- 1)方法,默认返回词典中最后一组(key,val),可以指定索引,例如st.peekitem(index = 0)返回第一组元素

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务