|
bisect模块可以使列表保持已排好的顺序,使用二分算法。
bisect(list,item,[low,[high]]) 返回要插入item点的索引,如果item在列表中了,则返回该条目的右边索引
bisect_right(list,iten,[left,[right]]) 同上
bisect_left(list,iten,[left,[right]]) 返回要插入item点的索引,如果item在列表中了,则返回该条目的左边索引
insort(list,item,[left,[right]]) 不返回索引,直接插入进去,如果有重复的item,则插入到右边
insort_right(list,item,[left,[right]]) 同上
insort_left(list,item,[left,[right]]) 不返回索引,直接插入进去,如果有重复的item,则插入到左边
下面是整个模块在linux python2.6版本的源码:
"""Bisection algorithms."""
def insort_right(a, x, lo=0, hi=None):
"""Insert item x in list a, and keep it sorted assuming a is sorted.
If x is already in a, insert it to the right of the rightmost x.
Optional args lo (default 0) and hi (default len(a)) bound the
slice of a to be searched.
"""
if lo |
|
|