自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python數(shù)據(jù)結(jié)構(gòu)與算法—維護(hù)有序列表bisect

開發(fā) 后端 算法
bisect實(shí)現(xiàn)了一個(gè)算法來向列表中插入元素,同時(shí)仍保持列表有序。本篇,將詳細(xì)介紹bisect庫高效率的玩轉(zhuǎn)列表。

[[402075]]

前言

bisect實(shí)現(xiàn)了一個(gè)算法來向列表中插入元素,同時(shí)仍保持列表有序。

本篇,將詳細(xì)介紹bisect庫高效率的玩轉(zhuǎn)列表。

有序插入

首先,我們來看看bisect庫是如何實(shí)現(xiàn)列表的插入的。具體代碼如下所示:

  1. import bisect 
  2.  
  3. a = [7, 5, 4, 1, 9, 8, 2, 3, 6, 0, 5] 
  4. print(a) 
  5. new_a = [] 
  6. for i in a: 
  7.     position = bisect.bisect(new_a, i) 
  8.     bisect.insort(new_a, i) 
  9.     print(position, new_a) 

 運(yùn)行之后,效果如下:

可以看到,bisect會(huì)自動(dòng)排序進(jìn)行插入,position為插入的索引位置。當(dāng)然,對(duì)于此類插入如果直接構(gòu)建列表,然后排序,可能速度更快。不過這只僅僅對(duì)于短列表而言非常的快,對(duì)于非常長的列表而言,使用上面這種插入排序方式可以大大節(jié)省時(shí)間和內(nèi)存,尤其是比較兩個(gè)列表成員的操作需要開銷很大的計(jì)算量時(shí)。

重復(fù)值處理

在實(shí)際的列表處理中,我們可能處理重復(fù)的值。如前文所示,多余的5是默認(rèn)插入到重復(fù)值右邊的,也就是說相當(dāng)于使用insort_right()函數(shù)。同理,那么左邊我們就可以用insort_left()函數(shù)。

  1. import bisect 
  2.  
  3. a = [7, 5, 4, 1, 9, 8, 2, 3, 6, 0, 5] 
  4. print(a) 
  5. new_a = [] 
  6. for i in a: 
  7.     position = bisect.bisect_left(new_a, i) 
  8.     bisect.insort_left(new_a, i) 
  9.     print(position, new_a) 

 運(yùn)行之后,效果如下:

讀者可以對(duì)比一下上面兩個(gè)圖片,最后一行的索引變化??梢钥吹?,一個(gè)是6,一個(gè)是5,因?yàn)槲覀冎鲃?dòng)變更,把重復(fù)值默認(rèn)插入到左邊了。

 

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2020-10-21 14:57:04

數(shù)據(jù)結(jié)構(gòu)算法圖形

2023-03-08 08:03:09

數(shù)據(jù)結(jié)構(gòu)算法歸并排序

2023-10-27 07:04:20

2023-09-25 12:23:18

Python

2023-03-02 08:15:13

2023-03-10 08:07:39

數(shù)據(jù)結(jié)構(gòu)算法計(jì)數(shù)排序

2023-03-07 08:02:07

數(shù)據(jù)結(jié)構(gòu)算法數(shù)列

2023-04-27 09:13:20

排序算法數(shù)據(jù)結(jié)構(gòu)

2023-03-13 10:08:31

數(shù)據(jù)結(jié)構(gòu)算法

2023-11-06 06:43:23

單鏈表查詢數(shù)據(jù)結(jié)構(gòu)

2017-08-31 09:45:43

JavaArrayList數(shù)據(jù)

2023-09-15 10:33:41

算法數(shù)據(jù)結(jié)構(gòu)

2023-02-08 07:52:36

跳躍表數(shù)據(jù)結(jié)構(gòu)

2023-10-30 08:31:42

數(shù)據(jù)結(jié)構(gòu)算法

2021-05-12 09:07:09

Java數(shù)據(jù)結(jié)構(gòu)算法

2021-06-11 06:10:09

Python數(shù)據(jù)結(jié)構(gòu)算法

2022-02-22 15:27:46

數(shù)據(jù)結(jié)構(gòu)容器算法

2020-12-31 05:31:01

數(shù)據(jù)結(jié)構(gòu)算法

2021-01-28 07:33:34

JavaScript鏈表數(shù)據(jù)

2020-10-12 11:48:31

算法與數(shù)據(jù)結(jié)構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)