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