Python內置模塊bisect(二分查找實現和快速插入有序序列)

1 概述

這是一個免費的二分查找實現和快速插入有序序列的工具。也就是說,你可以使用:
import bisect
bisect.insort(list, element)
一個元素插入列表中, 而你不需要再次調用 sort() 來保持容器的排序, 因爲這在長序列中這會非常昂貴.
查找: bisect(array, item)
插入: insort(array,item)

2 查找

import bisect
 
a = [1,4,6,8,12,15,20]
position = bisect.bisect(a,13)
print(position)
 
# 用可變序列內置的insert方法插入
a.insert(position,13)
print(a)

3 插入

使用bisect.insort,比bisect先查找該插入哪個位置,再用insert方法插入更加快速的方法

import bisect
 
a = [1,4,6,8,12,15,20]
bisect.insort(a,13)
print(a)

4 補充

bisect還有bisect_left,insort_left的用法,和不帶left的用法的區別是:當插入的元素和序列中的某一個元素相同時,該插入到該元素的前面(左邊,left),還是後面(右邊);
如果是查找,則返回該元素的位置還是該元素之後的位置。

import math
import cmath
import string
import sys
import bisect
from queue import Queue,LifoQueue,PriorityQueue
from itertools import permutations,combinations
from collections import deque,Counter

if __name__=='__main__':
    a=[1,4,6,8,12,15,20]
    b=bisect.bisect_left(a,7)
    d=bisect.bisect_right(a,7)
    c=bisect.bisect(a,1)
    bisect.insort_right(a,12)
    print(b)
    print(d)
    print(c)
    print(a)
    
 

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章