Python中bisect的用法
本文實例講述了Python中bisect的用法,是一個比較常見的實用技巧。分享給大家供大家參考。具體分析如下:
一般來說,Python中的bisect用于操作排序的數(shù)組,比如你可以在向一個數(shù)組插入數(shù)據(jù)的同時進行排序。下面的代碼演示了如何進行操作:
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]
可以看到,在插入這些隨機數(shù)的時候數(shù)組同時進行了排序。不過其中有一些重復(fù)的元素,比如上面的77,77。你可以對這些重復(fù)元素的順序進行設(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)。
希望本文所述對大家的Python程序設(shè)計有所幫助。
相關(guān)文章
Python實現(xiàn)給文件添加內(nèi)容及得到文件信息的方法
這篇文章主要介紹了Python實現(xiàn)給文件添加內(nèi)容及得到文件信息的方法,可實現(xiàn)從文件開頭添加內(nèi)容的功能,需要的朋友可以參考下2015-05-05使用 Python 處理 JSON 格式的數(shù)據(jù)
JSON 是一個很好的選擇。如果你對 Python 有所了解,就更加事半功倍了。下面就來介紹一下如何使用 Python 處理 JSON 數(shù)據(jù)。感興趣的朋友跟隨小編一起看看吧2019-07-07在Python中使用defaultdict初始化字典以及應(yīng)用方法
今天小編就為大家分享一篇在Python中使用defaultdict初始化字典以及應(yīng)用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10基于Python實現(xiàn)虛假評論檢測可視化系統(tǒng)
這篇文章主要為大家詳細介紹了如何基于Python實現(xiàn)一個簡單的虛假評論檢測可視化系統(tǒng),文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2023-04-04Python內(nèi)置數(shù)學(xué)函數(shù)和math模塊使用指南
這篇文章主要為大家介紹了Python數(shù)學(xué)函數(shù)math模塊使用指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11python smtplib模塊實現(xiàn)發(fā)送郵件帶附件sendmail
這篇文章主要為大家詳細介紹了python smtplib模塊實現(xiàn)發(fā)送郵件帶附件sendmail,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05