最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中bisect模塊與堆操作詳解

 更新時(shí)間:2023年06月07日 09:04:38   作者:郝學(xué)勝  
在Python中,bisect和heapq都是處理有序序列的常見模塊,這篇文章將分別介紹這兩個(gè)模塊的用法和實(shí)現(xiàn)方式,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

在Python中,bisectheapq都是處理有序序列的常見模塊,本文將分別介紹這兩個(gè)模塊的用法和實(shí)現(xiàn)方式。

bisect模塊

bisect模塊提供了一些函數(shù),實(shí)現(xiàn)了對(duì)一個(gè)序列進(jìn)行排序及維護(hù)已排序序列的一個(gè)二分查找。具體來說,bisect模塊主要提供了兩個(gè)函數(shù):bisectinsort。

bisect函數(shù)

bisect函數(shù)是一個(gè)通用的二分查找工具,它可以用來查找一個(gè)元素在已排序的序列中應(yīng)該插入的位置,以維持序列的排序。具體用法如下:

import bisect

# 初始化一個(gè)已排序的列表
lst = [1, 3, 4, 5, 7, 9]

# 使用bisect函數(shù)查找元素插入位置
pos = bisect.bisect(lst, 6)
print(pos)

運(yùn)行這段代碼可以發(fā)現(xiàn),變量pos輸出的是4,即元素6應(yīng)該插入到列表中索引為4的位置,這個(gè)列表就能保持升序排列。

insort函數(shù)

insort函數(shù)是bisect函數(shù)的變種,它可以在查找到插入位置的同時(shí)插入元素。具體用法和bisect類似,只是調(diào)用的函數(shù)不同,如下:

import bisect

# 初始化一個(gè)已排序的列表

lst = \[1, 3, 4, 5, 7, 9]

# 使用insort函數(shù)插入元素

bisect.insort(lst, 6)
print(lst)

運(yùn)行這段代碼可以得到輸出:

\[1, 3, 4, 5, 6, 7, 9]

這個(gè)函數(shù)接受兩個(gè)參數(shù),第一個(gè)參數(shù)是已排序的序列,第二個(gè)參數(shù)是要插入的元素。該函數(shù)會(huì)將元素插入到序列的正確位置。

heapq模塊

heapq模塊是一個(gè)堆隊(duì)列算法模塊,提供了在列表上進(jìn)行堆操作的函數(shù)。下面我們來看一下heapq模塊如何實(shí)現(xiàn)堆。

初始化堆

首先,初始化一個(gè)空堆和向堆中插入元素的方法如下:

import heapq

# 初始化一個(gè)空堆

heap = \[]

# 往堆中插入元素

heapq.heappush(heap, 3)
heapq.heappush(heap, 1)
heapq.heappush(heap, 7)
heapq.heappush(heap, 6)

以上代碼先用heap的索引為0的位置存儲(chǔ)根節(jié)點(diǎn)的值,以此類推往下存儲(chǔ)每個(gè)節(jié)點(diǎn)的值,然后在heap中插入元素使用的是heapq.heappush函數(shù)。插入后的堆如下圖所示:

  1
   \
   3
    \
    7
   /
  6

彈出元素

從堆中彈出元素使用的是heapq.heappop函數(shù),由于我們使用的是最小堆,根節(jié)點(diǎn)的值是最小的。彈出元素的代碼如下:

# 從堆中彈出元素

print(heapq.heappop(heap))
print(heapq.heappop(heap))
print(heapq.heappop(heap))
print(heapq.heappop(heap))

運(yùn)行以上代碼可以看到輸出:

1
3
6
7

這里的堆是使用數(shù)組實(shí)現(xiàn)的最小堆(根節(jié)點(diǎn)的值是最小的),如果要實(shí)現(xiàn)最大堆,可以在插入元素時(shí)取反,在彈出元素時(shí)再取反。

總結(jié)

Python的bisect模塊和heapq模塊分別用來操作有序序列和堆。bisect模塊提供了二分查找和插入元素的函數(shù),heapq模塊則提供了堆操作的函數(shù)。熟練使用這些模塊能夠提高編碼效率,并加深對(duì)數(shù)據(jù)結(jié)構(gòu)和算法的理解。

到此這篇關(guān)于Python中bisect模塊與堆操作詳解的文章就介紹到這了,更多相關(guān)Python bisect heapq內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python數(shù)字圖像處理基礎(chǔ)直方圖詳解

    Python數(shù)字圖像處理基礎(chǔ)直方圖詳解

    這篇文章主要介紹了Python數(shù)字圖像處理基礎(chǔ)直方圖詳解,本文對(duì)Python直方圖的定義、性質(zhì)、應(yīng)用以及Python直方圖的計(jì)算作了詳細(xì)的講解,有需要朋友可以借鑒參考下
    2021-09-09
  • 詳解Python裝飾器

    詳解Python裝飾器

    這篇文章主要介紹了Python裝飾器,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • django實(shí)現(xiàn)分頁的方法

    django實(shí)現(xiàn)分頁的方法

    這篇文章主要介紹了django實(shí)現(xiàn)分頁的方法,實(shí)例分析了django分頁的技巧與Paginator對(duì)象的用法,需要的朋友可以參考下
    2015-05-05
  • Python利用matplotlib繪制折線圖的新手教程

    Python利用matplotlib繪制折線圖的新手教程

    這篇文章主要給大家介紹了關(guān)于Python利用matplotlib繪制折線圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python實(shí)現(xiàn)從N個(gè)數(shù)中找到最大的K個(gè)數(shù)

    Python實(shí)現(xiàn)從N個(gè)數(shù)中找到最大的K個(gè)數(shù)

    這篇文章主要介紹了Python實(shí)現(xiàn)從N個(gè)數(shù)中找到最大的K個(gè)數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • pyCaret效率倍增開源低代碼的python機(jī)器學(xué)習(xí)工具

    pyCaret效率倍增開源低代碼的python機(jī)器學(xué)習(xí)工具

    這篇文章主要介紹了pyCaret一款可以使效率倍增的開源低代碼的python機(jī)器學(xué)習(xí)工具,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • python實(shí)現(xiàn)中文文本分句的例子

    python實(shí)現(xiàn)中文文本分句的例子

    今天小編就為大家分享一篇python實(shí)現(xiàn)中文文本分句的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • OpenCV?基本圖形繪制函數(shù)詳解

    OpenCV?基本圖形繪制函數(shù)詳解

    這篇文章主要介紹了OpenCV?基本圖形繪制函數(shù),用于繪制圓的circle函數(shù),用于繪制填充的多邊形的fillPoly函數(shù),本文給大家提到好幾種,通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • 詳解pandas使用drop_duplicates去除DataFrame重復(fù)項(xiàng)參數(shù)

    詳解pandas使用drop_duplicates去除DataFrame重復(fù)項(xiàng)參數(shù)

    這篇文章主要介紹了詳解pandas使用drop_duplicates去除DataFrame重復(fù)項(xiàng)參數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python讀取HDFS目錄下的所有文件的實(shí)現(xiàn)示例

    Python讀取HDFS目錄下的所有文件的實(shí)現(xiàn)示例

    HDFS是Apache Hadoop的分布式文件系統(tǒng),本文主要介紹了Python讀取HDFS目錄下的所有文件的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07

最新評(píng)論

集贤县| 石河子市| 渑池县| 绥中县| 清远市| 华宁县| 扶余县| 安宁市| 吉隆县| 长春市| 华容县| 恭城| 东乡县| 花莲县| 河曲县| 景泰县| 沐川县| 连平县| 新沂市| 盘山县| 中阳县| 成都市| 柳江县| 日土县| 库尔勒市| 五家渠市| 益阳市| 商洛市| 嵊州市| 陆河县| 丹寨县| 印江| 雷州市| 阿瓦提县| 金门县| 赤水市| 澄迈县| 万宁市| 晴隆县| 千阳县| 巴彦淖尔市|