python內建高階資料結構

2021-10-05 05:00:41 字數 2106 閱讀 1764

在程式設計過程,特別是線上程式設計的過程中,總會需要用到很多高階的資料結構,但是python中的一些高階資料結構並沒有那麼的「明顯」,這裡梳理一下。

mystack=

1)2)

3)mystack

out[8]

:[1,

2,3]

mystack.pop(

)out[9]

:3

一般的佇列可能大部分人都跟我的使用差不多,還是用list來實現,get()方法用pop(0)代替。但是我以前的文章中應該已經說過,pop(0)的時間複雜度比較的高。

這裡可以引用python自己的佇列結構。

import queue 

myqueue=queue.queue(

)myqueue.put(2)

myqueue.put(3)

myqueue.put(1)

myqueue.put(5)

myqueue.get(

)out[16]

:2myqueue.get(

)out[17]

:3

沒有去深究get()的實現方法,但是這個內建,至少很香,應該比用list維護要香。

不但可以從小到大排序,還可以取出優先的前k個樹(越小越優先),而且演算法複雜度是logn級別的,其實自己也可以用二叉堆進行實現,但是呼叫現成的,而且是內建的,肯定更舒服。

import queue

#優先佇列

prique=queue.priorityqueue(

)prique.put([3

,"趙"])

print

(prique.queue)

prique.put([2

,"錢"])

print

(prique.queue)

prique.put([1

,"孫"])

print

(prique.queue)

prique.put([7

,"李"])

print

(prique.queue)

prique.put([5

,"周"])

print

(prique.queue)

##取資料

# print(prique.get())

# print(prique.get())

# print(prique.get())

# print(prique.get())

print

(prique.get(

))

左右都可追加,左右都可彈出,collection是乙個不錯的包,改天好好研究下。

import collections

...: dque=collections.deque().

..2)

...3

)...

4)..

.5).

..6)

...7

)...

:print

(dque.popleft())

...:

print

(dque.pop())

76

堆就是個完全二叉樹,跟優先佇列是一樣的,不同的是這裡每次都可以窺探到二叉堆的頂元素

import heapq#堆結構,初始化為小頂堆..

.: heap=[3

,4,1

,52,3

]...

: heapq.heapify(heap)

print

(heap)[1

,3,3

,52,4

]4)print

(heap)[1

,3,3

,52,4

,4]2

)print

(heap)[1

,3,2

,52,4

,4,3

]out[52]

:1print

(heap)[2

,3,3

,52,4

,4]

python內建資料結構 Python內建資料結構

分類 數值型int float complex bool 序列物件 list string tuple 鍵值對set集合 dict字典 數值型int python3中的int都是長整型,沒有大小限制,但受限於記憶體區域的大小 float 浮點型,由整數部分和小數部分組成。complex 複數,由實數...

python內建資料結構

數列物件 鍵值對 型別轉換 built in int 取整數部分 整除且向下取整 min 取最小值 max 取最大值 pow x,y 等價於x y math.sqrt 開平方 進製函式,返回值是字串 math.pi math.e 自如常數 count value 時間複雜度 len 不產生新列表,就...

Python內建資料結構

分類 數字處理函式 進製函式,返回字串 型別判斷 列表索引訪問 列表查詢 列表元素修改 列表增加 插入元素 列表尾部追加元素,返回none 即不產生新列表,就地修改 時間複雜度為o 1 追加元素全部輸出為乙個整體 insert index,object 在指定索引位置插入元素object,返回non...