参考:http://blog.csdn.net/calling_wisdom/article/details/41493561
Python的bisect模块是内置模块,bisect模块实现了一个算法用于插入元素到有序列表
bisect.bisect_left(a, x, lo=0, hi=len(a)) 返回将x插入到列表a中的索引位置,如果已有x,则返回第一个x的位置
bisect.bisect_right(a, x, lo=0, hi=len(a)) 返回将x插入到列表a中的索引位置,如果已有x,则返回最后一个x位置的下一个位置
bisect.bisect(a, x, lo=0, hi=len(a)) 与bisect_right相同
bisect.insort_left(a, x, lo=0, hi=len(a)) 将x插入到列表a中,如果已有x,插入到所有x的最左边
bisect.insort_right(a, x, lo=0, hi=len(a)) 将x插入到列表a中,如果已有x,插入到所有x的最右边
bisect.insort(a, x, lo=0, hi=len(a)) 与insort_right相同
>>> import bisect
>>>
>>> l = [1, 3, 3, 6, 8, 12, 15]
>>>
>>> bisect.bisect_left(l, 3)
1
>>> bisect.bisect_left(l, 6)
3
>>> bisect.bisect_right(l, 6)
4
>>> help(bisect)
>>> bisect.bisect_right(l, 7)
4
>>> bisect.bisect_left(l, 7)
4
>>> bisect.insort_left(l, 7)
>>>
>>> l
[1, 3, 3, 6, 7, 8, 12, 15]
>>> bisect.insort_right(l, 7)
>>> l
[1, 3, 3, 6, 7, 7, 8, 12, 15]
>>> l
[1, 3, 3, 6, 7, 7, 8, 12, 15]
>>> bisect.bisect_left(l, 3)
1
>>> bisect.bisect_right(l, 3)
3