Python3 bisect是維護已排序序列神器

2021-08-30 11:01:08 字數 963 閱讀 7307

import bisect

b=[2,3,4,5]

bisect.insort_left(b,2.0)

bisect.insort_right(b,3.0)

print(bisect.bisect_left(b,2))

print(bisect.bisect_right(b,2))

print(b)

列印結果:

0    

2[2.0, 2, 3, 3.0, 4, 5]

1.其中 bisect.insort_left 和bisect.insort_right 都是在序列插入資料. 當有相同的值得時候,這個時候系統就不知道怎麼排序了.例如 2.0==2,系統為了解決這個問題所以搞出來這個方法,系統預設的是right. 通過上邊的例子可以看出效果.

2. bisect.bisect_left 和bisect_bisect_right , 開發插入資料的時候提前要知道 這個資料插入列表到底在哪個位置.所以得出這兩個方法. 可以參考下上邊的例子,自己體會下.

看下 它自動排序的威力

import bisect

a=["c","dd","m",]

bisect.insort(a,"e")

bisect.insort(a,"eeee")

bisect.insort_right(a,"eeeeeeee")

bisect.insort(a,"ddd")

print(bisect.bisect(a,"ddd"))

print(bisect.bisect_left(a,"ddd"))

print(a)

列印結果:

3

2['c', 'dd', 'ddd', 'e', 'eeee', 'eeeeeeee', 'm']

python是誰維護的 Python模組維護

模組 在python中,乙個.py檔案,就是乙個模組。cpython虛擬機器自己模擬了程序和執行緒的概念。在cpython初始化執行環境的時候,會建立乙個空的程序,進而在程序中建立乙個空的執行緒。cpython對模組維護的策略是 python中所有的模組都被維護在程序中,而所有的執行緒共享程序中的模...

3二維陣列查詢python

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思路 1 從右上角開始 2 如果該元素大於target,則向左移一位 3 如果該元素小於target,則向下移一位 array 二維列...

Python處理高光譜資料 3 降維

用到的庫 matplotlib scipy spectral 主要內容 主成分分析 pca 與線性判別 lda 歡迎有興趣的朋友交流指點。最後,廢話不多說直接上 import matplotlib.pyplot as plt from scipy.io import loadmat import s...