欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中bisect的用法

 更新時(shí)間:2014年09月23日 15:55:07   投稿:shichen2014  
這篇文章主要介紹了Python中bisect的用法,主要講述了針對(duì)數(shù)組的插入及排序操作,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

本文實(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)文章

最新評(píng)論