Python中bisect的用法

2022-10-04 23:48:24 字數 2367 閱讀 8774

一般來說,python中的bisect用於操作排序的陣列,比如你可以在向乙個陣列插入資料的同時進行排序。下面的**演示了如何進行操作:

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

輸出結果為:

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]

可以看到,在插入這些隨機數的時候陣列同時進行了排序。不過其中有一些重複的元素,比如上面的77,77。你可以對這些重複元素的順序進行設定,如果希望重複的元素出現在與他相同的元素左邊就是用bisect_left,否則就是用bisect_right,相應的使用insort_left和insort_right。比如下面的**,我們可以看到出現重複的元素索引變化:

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

輸出結果為:

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, 84, 85]

此函式bisect.bis程式設計客棧ect(list,key) ,猶如j**a裡的treemap的tailmap(fromkey)。

希望本www.cppcns.com文所述對大家的python程式設計有所幫助。

本文標題: python中bisect的用法

本文位址:

Python中bisect的使用

1 2 這裡,就我有疑問的地方做個記錄 第一,bisect模組中的函式都有哪些用途。根據python 的參考手冊,這個模組的主要用途是運用bisection algorithm 分半演算法 在已序的列表中進行查詢和插入操作。練習中使用了bisect left a,x 函式,這個函式給出了x元素在列表...

Python中bisect的使用方法

python中列表 list 的實現其實是乙個陣列,當要查詢某乙個元素的時候時間複雜度是o n 使用list.index 方法,但是隨著資料量的上公升,list.index 的效能也逐步下降,所以我們需要使用bisect模組來進行二分查詢,前提我們的列表是乙個有序的列表。遞迴二分查詢和迴圈二分查詢 ...

Python中bisect的使用方法

python中列表 list 的實現其實是乙個陣列,當要查詢某乙個元素的時候時間複雜度是o n 使用list.index 方法,但是隨著資料量的上公升,list.index 的效能也逐步下降,所以我們需要使用bisect模組來進行二分查詢,前提我們的列表是乙個有序的列表。遞迴二分查詢和迴圈二分查詢 ...