關(guān)于python類SortedList詳解
SortedList 有序序列
class sortedcontainers.SortedList(iterable=None, key=None)
方法
1.添加值
- SortedList.add(value) 添加新元素,并排序。時(shí)間復(fù)雜度O(log(n)).
- SortedList.update(iterable) 對(duì)添加的可迭代的所有元素排序。時(shí)間復(fù)雜度O(k*log(n)).
2.移除值
- SortedList.clear() 移除所有元素。時(shí)間復(fù)雜度O(n).
- SortedList.discard(value) 移除一個(gè)值元素,如果元素不存在,不報(bào)錯(cuò)。時(shí)間復(fù)雜度O(log(n)).
- SortedList.remove(value) 移除一個(gè)值元素,如果元素不存在,報(bào)錯(cuò)ValueError。時(shí)間復(fù)雜度O(log(n)).
- SortedList.pop(index=-1) 移除一個(gè)指定下標(biāo)元素,如果有序序列為空或者下標(biāo)超限,報(bào)錯(cuò)IndexError. 時(shí)間復(fù)雜度O(log(n
3.查找
- SortedList.bisect_left(value) 查找元素可以插入的位置下標(biāo),如果這個(gè)value已經(jīng)存在,則插入已經(jīng)存在的所有values之前(左側(cè)).時(shí)間復(fù)雜度O(log(n)).
s = SortedList([1,2,3,9,8,6,5,5,5,5,5]) s.bisect_left(5) Out[5]: 3 s Out[6]: SortedList([1, 2, 3, 5, 5, 5, 5, 5, 6, 8, 9])
- SortedList.bisect_right(value) 查找元素可以插入的位置下標(biāo),如果這個(gè)value已經(jīng)存在,則插入已經(jīng)存在的所有values之后(右側(cè))。時(shí)間復(fù)雜度O(log(n)).
s.bisect_right(5) Out[7]: 8 s Out[8]: SortedList([1, 2, 3, 5, 5, 5, 5, 5, 6, 8, 9])
- SortedList.count(value) 查找元素出現(xiàn)的次數(shù)。時(shí)間復(fù)雜度O(log(n)).
s.count(5) Out[9]: 5
- SortedList.index(value, start=None, Stop=None) 查找索引范圍[start,stop)內(nèi)第一次出現(xiàn)value的索引,如果value不存在,報(bào)錯(cuò)ValueError. 時(shí)間復(fù)雜度O(log(n)).
4.迭代值
- SortedList.irange(minimun=None, maximum=None, inclusive=True, True, reverse=False) 返回value=[minimun,maximum]之間的可迭代值,inclusive = Ture, True 第一個(gè)True表示包括索引minimun, 第二個(gè)Ture表示包括索引maximum,reverse是表示返回的可迭代值是否反轉(zhuǎn)。
- SortedList.islice(start=None, stop=None, reverse=False) 返回index=[start, stop)之間的可迭代值(切片)。
5. 其他
- SortedList.copy() 返回一個(gè)淺拷貝有序序列。時(shí)間復(fù)雜度O(n)。
淺拷貝(1)直接賦值,默認(rèn)淺拷貝傳遞對(duì)象的引用而已,原始列表改變,被賦值的列表也會(huì)做相同的改變。
a = [1,2,3] b=a b Out[60]: [1, 2, 3] a[0]=0 a Out[62]: [0, 2, 3] b Out[63]: [0, 2, 3]
淺拷貝(2)copy函數(shù),淺拷貝傳遞子對(duì)象的引用,原始數(shù)據(jù)改變,只有子對(duì)象會(huì)改變。
a = [[1],2,3] b = a.copy() a Out[85]: [[1], 2, 3] b Out[86]: [[1], 2, 3] # 對(duì)象不改變 a.append(4) a Out[88]: [[1], 2, 3, 4] b Out[89]: [[1], 2, 3] # 子對(duì)象跟著改變 a[0].append(2) a Out[91]: [[1, 2], 2, 3, 4] b Out[92]: [[1, 2], 2, 3]
以上就是關(guān)于python類SortedList詳解的詳細(xì)內(nèi)容,更多關(guān)于python類SortedList詳解的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python開發(fā)游戲之井字游戲的實(shí)戰(zhàn)步驟
最近正在學(xué)習(xí)Python,所以最近做了一個(gè)關(guān)于Python的實(shí)例,下面這篇文章主要給大家介紹了關(guān)于Python開發(fā)游戲之井字游戲的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02利用Python實(shí)現(xiàn)外觀數(shù)列求解
這篇文章主要介紹了利用Python實(shí)現(xiàn)外觀數(shù)列求解,文章利用舉例說明文章的主題內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴樂意參考一下2022-03-03Python-re中search()函數(shù)的用法詳解(查找ip)
這篇文章主要介紹了Python-re中search()函數(shù)的用法-----查找ip,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03基于Python實(shí)現(xiàn)牛牛套圈小游戲的示例代碼
“幸運(yùn)牛牛套圈圈”套住歡樂,圈住幸福,等你來挑戰(zhàn)!這篇文章小編主要為大家介紹一款基于Python實(shí)現(xiàn)牛牛套圈小游戲,感興趣的小伙伴可以了解一下2023-02-02python中nan與inf轉(zhuǎn)為特定數(shù)字方法示例
這篇文章主要給大家介紹了將python中nan與inf轉(zhuǎn)為特定數(shù)字的方法,文中給出了詳細(xì)的示例代碼和運(yùn)行結(jié)果,對(duì)大家的理解和學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-05-05Python中的random函數(shù)實(shí)例詳解
random模塊提供生成偽隨機(jī)數(shù)的函數(shù),在使用時(shí)需要導(dǎo)入random模塊,這篇文章主要介紹了Python中的random函數(shù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02教你用python3根據(jù)關(guān)鍵詞爬取百度百科的內(nèi)容
這篇文章介紹的是利用python3根據(jù)關(guān)鍵詞爬取百度百科的內(nèi)容,注意本文用的是python3版本以及根據(jù)關(guān)鍵詞爬取,爬取也只是單純的爬網(wǎng)頁信息,有需要的可以參考借鑒。2016-08-08