bisect_left(a, x)
作用:在已排序列表 a 中查找 第一个 ≥ x 的位置(即插入点),使得插入后列表仍保持有序。
如果 x 已存在,返回最左边相等元素的索引;
如果 x 大于所有元素,返回 len(a)。
from bisect import bisect_left
sorted_list = [1, 2, 4, 4, 5]
print(bisect_left(sorted_list, 4)) # 输出: 2(第一个 4 的位置)
print(bisect_left(sorted_list, 3)) # 输出: 2(3 应插在索引 2,保持 [1,2,3,4,4,5])
print(bisect_left(sorted_list, 6)) # 输出: 5(末尾之后)
bisect_right(a, x)(也叫 bisect)
作用:在已排序列表 a 中查找 第一个 > x 的位置(即插入点),使得插入后列表仍保持有序。
如果 x 已存在,返回最右边相等元素之后的位置;
如果 x 大于所有元素,同样返回 len(a)。
from bisect import bisect_right
sorted_list = [1, 2, 4, 4, 5]
print(bisect_right(sorted_list, 4)) # 输出: 4(最后一个 4 的下一个位置)
print(bisect_right(sorted_list, 3)) # 输出: 2(同 bisect_left,因为 3 不存在)
print(bisect_right(sorted_list, 6)) # 输出: 5
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com