Python中bisect的用法
本文實(shí)例講述了Python中bisect的用法,是一個(gè)比較常見的實(shí)用技巧。分享給大家供大家參考。具體分析如下:
一般來(lái)說(shuō),Python中的bisect用于操作排序的數(shù)組,比如你可以在向一個(gè)數(shù)組插入數(shù)據(jù)的同時(shí)進(jìn)行排序。下面的代碼演示了如何進(jìn)行操作:
import bisect import random random.seed(1) print('New pos contents') print('-----------------') l=[] for i in range(1,15): r=random.randint(1,100) position=bisect.bisect(l,r) bisect.insort(l,r) print '%3d %3d'%(r,position),l
輸出結(jié)果為:
New pos contents ----------------- 14 0 [14] 85 1 [14, 85] 77 1 [14, 77, 85] 26 1 [14, 26, 77, 85] 50 2 [14, 26, 50, 77, 85] 45 2 [14, 26, 45, 50, 77, 85] 66 4 [14, 26, 45, 50, 66, 77, 85] 79 6 [14, 26, 45, 50, 66, 77, 79, 85] 10 0 [10, 14, 26, 45, 50, 66, 77, 79, 85] 3 0 [3, 10, 14, 26, 45, 50, 66, 77, 79, 85] 84 9 [3, 10, 14, 26, 45, 50, 66, 77, 79, 84, 85] 44 4 [3, 10, 14, 26, 44, 45, 50, 66, 77, 79, 84, 85] 77 9 [3, 10, 14, 26, 44, 45, 50, 66, 77, 77, 79, 84, 85] 1 0 [1, 3, 10, 14, 26, 44, 45, 50, 66, 77, 77, 79, 84, 85]
可以看到,在插入這些隨機(jī)數(shù)的時(shí)候數(shù)組同時(shí)進(jìn)行了排序。不過(guò)其中有一些重復(fù)的元素,比如上面的77,77。你可以對(duì)這些重復(fù)元素的順序進(jìn)行設(shè)置,如果希望重復(fù)的元素出現(xiàn)在與他相同的元素左邊就是用bisect_left,否則就是用bisect_right,相應(yīng)的使用insort_left和insort_right。比如下面的代碼,我們可以看到出現(xiàn)重復(fù)的元素索引變化:
import bisect import random random.seed(1) print('New pos contents') print('-----------------') l=[] for i in range(1,15): r=random.randint(1,100) position=bisect.bisect_left(l,r) bisect.insort_left(l,r) print '%3d %3d'%(r,position),l
輸出結(jié)果為:
New pos contents ----------------- 14 0 [14] 85 1 [14, 85] 77 1 [14, 77, 85] 26 1 [14, 26, 77, 85] 50 2 [14, 26, 50, 77, 85] 45 2 [14, 26, 45, 50, 77, 85] 66 4 [14, 26, 45, 50, 66, 77, 85] 79 6 [14, 26, 45, 50, 66, 77, 79, 85] 10 0 [10, 14, 26, 45, 50, 66, 77, 79, 85] 3 0 [3, 10, 14, 26, 45, 50, 66, 77, 79, 85] 84 9 [3, 10, 14, 26, 45, 50, 66, 77, 79, 84, 85] 44 4 [3, 10, 14, 26, 44, 45, 50, 66, 77, 79, 84, 85] 77 8 [3, 10, 14, 26, 44, 45, 50, 66, 77, 77, 79, 84, 85] 1 0 [1, 3, 10, 14, 26, 44, 45, 50, 66, 77, 77, 79, 84, 85]
此函數(shù)bisect.bisect(list,key) ,猶如java里的TreeMap的tailMap(fromkey)。
希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python實(shí)現(xiàn)抓取頁(yè)面上鏈接的簡(jiǎn)單爬蟲分享
這篇文章主要介紹了Python實(shí)現(xiàn)抓取頁(yè)面上鏈接的簡(jiǎn)單爬蟲分享,本文使用了一個(gè)開源模塊requests實(shí)現(xiàn)需求,需要的朋友可以參考下2015-01-01Python實(shí)現(xiàn)給文件添加內(nèi)容及得到文件信息的方法
這篇文章主要介紹了Python實(shí)現(xiàn)給文件添加內(nèi)容及得到文件信息的方法,可實(shí)現(xiàn)從文件開頭添加內(nèi)容的功能,需要的朋友可以參考下2015-05-05使用 Python 處理 JSON 格式的數(shù)據(jù)
JSON 是一個(gè)很好的選擇。如果你對(duì) Python 有所了解,就更加事半功倍了。下面就來(lái)介紹一下如何使用 Python 處理 JSON 數(shù)據(jù)。感興趣的朋友跟隨小編一起看看吧2019-07-07在Python中使用defaultdict初始化字典以及應(yīng)用方法
今天小編就為大家分享一篇在Python中使用defaultdict初始化字典以及應(yīng)用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10基于Python實(shí)現(xiàn)虛假評(píng)論檢測(cè)可視化系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的虛假評(píng)論檢測(cè)可視化系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-04-04Python內(nèi)置數(shù)學(xué)函數(shù)和math模塊使用指南
這篇文章主要為大家介紹了Python數(shù)學(xué)函數(shù)math模塊使用指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11python smtplib模塊實(shí)現(xiàn)發(fā)送郵件帶附件sendmail
這篇文章主要為大家詳細(xì)介紹了python smtplib模塊實(shí)現(xiàn)發(fā)送郵件帶附件sendmail,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05python遺傳算法之單/多目標(biāo)規(guī)劃問(wèn)題
本文主要介紹了python遺傳算法之單/多目標(biāo)規(guī)劃問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04