此模块支持有序列表,因此在插入新数据时可以保留顺序。 在长列表中,如果包含元素的比较操作非常昂贵,这将是对更常用方法的改进。 这个模块被称为bisect,因为它使用了基本的“二分”(bisection )算法。 源代码也可以成为很棒的算法的例子((也可以进行边界判断! )
定义了以下函数:
bisect.bisect_left(a, x, lo=0, hi=len(a))
在a中找到x的合适插入点以维持秩序。 参数lo和hi可用于确定要考虑的子集; 默认情况下,使用整个列表。 如果x已经存在于a中,则插入点位于已经存在的元素之前,即左侧。 如果a是列表(list ),则返回值可以包含在list.insert )的第一个参数中。 返回的插入点I,可以将数组a分为两个部分。 左侧是all(val x for val in a[lo:i] ),右侧是all(val=x for val in a[i:hi] )。bisect.bisect_right(a, x, lo=0, hi=len(a))
bisect.bisect(a, x, lo=0, hi=len(a))
与bisect_left ()类似,但返回的插入点位于a中已经存在的元素x的右侧。 返回的插入点I可以将数组a分为两个部分。 左侧为全部(val )