Python3二分查找?guī)旌瘮?shù)bisect(),bisect_left()和bisect_right()的區(qū)別
前提:列表有序?。?!
bisect()和bisect_right()等同,那下面就介紹bisect_left()和bisec_right()的區(qū)別!
用法:
index1 = bisect(ls, x) #第1個(gè)參數(shù)是列表,第2個(gè)參數(shù)是要查找的數(shù),返回值為索引 index2 = bisect_left(ls, x) index3 = bisec_right(ls, x)
bisect.bisect和bisect.bisect_right返回大于x的第一個(gè)下標(biāo)(相當(dāng)于C++中的upper_bound),bisect.bisect_left返回大于等于x的第一個(gè)下標(biāo)(相當(dāng)于C++中的lower_bound)。
case 1
如果列表中沒有元素x,那么bisect_left(ls, x)和bisec_right(ls, x)返回相同的值,該值是x在ls中“合適的插入點(diǎn)索引,使得數(shù)組有序”。此時(shí),ls[index2] > x,ls[index3] > x。
import bisect ls = [1,5,9,13,17] index1 = bisect.bisect(ls,7) index2 = bisect.bisect_left(ls,7) index3 = bisect.bisect_right(ls,7) print("index1 = {}, index2 = {}, index3 = {}".format(index1, index2, index3))
程序運(yùn)行結(jié)果為,
index1 = 2, index2 = 2, index3 = 2
case 2
如果列表中只有一個(gè)元素等于x,那么bisect_left(ls, x)的值是x在ls中的索引,ls[index2] = x。而bisec_right(ls, x)的值是x在ls中的索引加1,ls[index3] > x。
import bisect ls = [1,5,9,13,17] index1 = bisect.bisect(ls,9) index2 = bisect.bisect_left(ls,9) index3 = bisect.bisect_right(ls,9) print("index1 = {}, index2 = {}, index3 = {}".format(index1, index2, index3))
程序運(yùn)行結(jié)果為,
index1 = 3, index2 = 2, index3 = 3
case 3
如果列表中存在多個(gè)元素等于x,那么bisect_left(ls, x)返回最左邊的那個(gè)索引,此時(shí)ls[index2] = x。bisect_right(ls, x)返回最右邊的那個(gè)索引加1,此時(shí)ls[index3] > x。
import bisect ls = [1,5,5,5,17] index1 = bisect.bisect(ls,5) index2 = bisect.bisect_left(ls,5) index3 = bisect.bisect_right(ls,5) print("index1 = {}, index2 = {}, index3 = {}".format(index1, index2, index3))
程序運(yùn)行結(jié)果為,
index1 = 4, index2 = 1, index3 = 4
到此這篇關(guān)于Python3二分查找?guī)旌瘮?shù)bisect(), bisect_left()和bisect_right()介紹的文章就介紹到這了,更多相關(guān)Python3二分查找?guī)旌瘮?shù)bisect()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python自動(dòng)化測(cè)試三部曲之unittest框架的實(shí)現(xiàn)
這篇文章主要介紹了python自動(dòng)化測(cè)試三部曲之unittest框架的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-1011個(gè)Python Pandas小技巧讓你的工作更高效(附代碼實(shí)例)
這篇文章主要介紹了11個(gè)Python Pandas小技巧讓你的工作更高效(附代碼實(shí)例),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-04-04在matlab中創(chuàng)建類似字典的數(shù)據(jù)結(jié)構(gòu)方式
這篇文章主要介紹了在matlab中創(chuàng)建類似字典的數(shù)據(jù)結(jié)構(gòu)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03python pytorch模型轉(zhuǎn)onnx模型的全過程(多輸入+動(dòng)態(tài)維度)
這篇文章主要介紹了python pytorch模型轉(zhuǎn)onnx模型的全過程(多輸入+動(dòng)態(tài)維度),本文給大家記錄記錄了pt文件轉(zhuǎn)onnx全過程,簡(jiǎn)單的修改即可應(yīng)用,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-03-03Python實(shí)現(xiàn)一個(gè)數(shù)組除以一個(gè)數(shù)的例子
今天小編就為大家分享一篇Python實(shí)現(xiàn)一個(gè)數(shù)組除以一個(gè)數(shù)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07