Python中bisect的用法
本文實(shí)例講述了Python中bisect的用法,是一個(gè)比較常見的實(shí)用技巧。分享給大家供大家參考。具體分析如下:
一般來說,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)行了排序。不過其中有一些重復(fù)的元素,比如上面的77,77。你可以對這些重復(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)。
希望本文所述對大家的Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
pytorch中的nn.ZeroPad2d()零填充函數(shù)實(shí)例詳解
這篇文章主要介紹了pytorch中的nn.ZeroPad2d()零填充函數(shù)實(shí)例詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
Python文件操作JSON CSV TSV Excel和Pickle文件序列化
這篇文章主要為大家介紹了Python文件操作之JSON、CSV、TSV、Excel和Pickle文件序列化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
用Python實(shí)現(xiàn)一個(gè)打字速度測試工具來測試你的手速
有很多小伙伴們都苦惱自己手速不夠,今天特地整理了這篇文章,教你用Python實(shí)現(xiàn)一個(gè)打字測試工具來測試你的打字速度,文中有非常詳細(xì)的代碼示例,對想練手速的小伙伴們很有用哦,需要的朋友可以參考下2021-05-05
Python進(jìn)行Restful?API開發(fā)實(shí)例詳解
這篇文章主要介紹了Python進(jìn)行Restful?API開發(fā)實(shí)例,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
Python pygame 動畫游戲循環(huán)游戲時(shí)鐘實(shí)現(xiàn)原理
這篇文章主要為大家介紹了Python pygame 動畫游戲循環(huán)游戲時(shí)鐘實(shí)現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08

