区别:如果有多个相同元素,bisect_left返回最左侧的插入位置。 2.bisect_right函数源码及解析 defbisect_right(a,x,lo=0,hi=None):iflo<0:raiseValueError('lo must be non-negative')ifhiisNone:hi=len(a)whilelo<hi:mid=(lo+hi)//2ifx
在bisect_right中,只有当 x=a[mid] or x>a[mid]时,lo才会更新为mid+1,所以最终的lo只可能是第一个大于x的索引 在bisect_left中,当 a[mid] < x时,lo会更新为mid+1,此时我们想要的索引位置必然在mid右侧,所以lo可以为相同的x的第一次出现的位置;同时我们注意到当 a[mid] >= x时,hi=mid,说明当lo...
index = bisect_left(arr, 6) print(f"Insert 6 at index {index} to maintain sorted order.") 结果: Insert 6 at index 6 to maintain sorted order. Insert 6 at index 6 to maintain sorted order. Insert 6 at index 4 to maintain sorted order. 源码分析 我们先来看 bisect_right 的源码 def ...