1 執行個體
這個模組只有幾個函數,
一旦決定使用二分搜尋時,立馬要想到使用這個模組
import bisect L = [1,3,3,6,8,12,15] x = 3 x_insert_point = bisect.bisect_left(L,x) #在L中尋找x,x存在時返回x左側的位置,x不存在返回應該插入的位置..這是3存在於列表中,返回左側位置1 print x_insert_point x_insert_point = bisect.bisect_right(L,x) #在L中尋找x,x存在時返回x右側的位置,x不存在返回應該插入的位置..這是3存在於列表中,返回右側位置3 print x_insert_point x_insort_left = bisect.insort_left(L,x) #將x插入到列表L中,x存在時插入在左側 print L x_insort_rigth = bisect.insort_right(L,x) #將x插入到列表L中,x存在時插入在右側 print L
結果:
1
3
[1, 3, 3, 3, 6, 8, 12, 15]
[1, 3, 3, 3, 3, 6, 8, 12, 15]
實際使用中
2 bisect模組Bisect模組提供的函數有:(1)尋找bisect.bisect_left(a,x, lo=0, hi=len(a)) :尋找在有序列表a中插入x的index。lo和hi用於指定列表的區間,預設是使用整個列表。bisect.bisect_right(a,x, lo=0, hi=len(a))bisect.bisect(a, x,lo=0, hi=len(a))這2個和bisect_left類似,但如果x已經存在,在其右邊插入。(2)插入bisect.insort_left(a,x, lo=0, hi=len(a))在有序列表a中插入x。如果x已經存在,在其左邊插入。傳回值為index。 和a.insert(bisect.bisect_left(a,x, lo, hi), x) 的效果相同。bisect.insort_right(a,x, lo=0, hi=len(a))bisect.insort(a, x,lo=0, hi=len(a))和insort_left類似,但如果x已經存在,在其右邊插入。 可以函數可以分2類,bisect*,用於尋找index。Insort*用於實際插入。預設重複時從右邊插入。實際常用的估計是insort。