Python教程:Python內建資料結構之雙向佇列!
經常聽說Python就是一門執行速度低的語言,可能是你的程式中使用了複雜的演算法與資料結構,才會導致程式執行速率低的。在Python的標準庫中提供了常見的資料結構工開發者使用,不僅執行速率比較快,還可以簡化開發者的程式設計工作。下面我來介紹其中的雙向佇列:
collections模組中的deque類,就是雙向佇列,這種佇列可以從頭部或者尾部新增或者移除元素,這種操作的所消耗的時間時常數級別的,所以它非常合適表示先進先出的佇列。
# 演示先進先出的佇列操作
from collections import deque
queue = deque()
# 新增資料
queue.append(20)
queue.append(30)
queue.append(40)
print(queue) # deque([20, 30, 40])
# 移除資料
queue.popleft()
print(queue) # deque([30, 40])
這種情況下,也許有人會說列表也可以做這種操作的,那麼區別是什麼?區別是列表是單向的,在尾部新增或者移除資料的操作耗時是常數級別的,但是如果在頭部新增或者移除資料卻是線性級別(耗時與資料大小成正比)的,那麼對比雙向佇列來說,就慢許多了,可以看下面程式碼
from time import time
# 演示先進先出的佇列操作
from collections import deque
# 在雙向佇列中新增資料
queue = deque()
for i in range(20000):
queue.append(i)
print(queue)
start = time()
queue.popleft()
end = time()
print(end - start) # 3.0994415283203125e-06 不同機器耗時不一樣 可以在自己的電腦上測試
# 在列表中新增相同的資料 做一樣的操作
nums = list()
for i in range(20000):
nums.append(i)
print(nums)
start = time()
nums.pop(0)
end = time()
print(end - start) # 1.5020370483398438e-05 不同機器耗時不一樣 可以在自己的電腦上測試
從上面兩組資料來看,列表list做先進先出操作耗時比雙向佇列deque完成相應的操作多很多的。所以要完成先進先出的佇列操作時應該選擇雙向佇列deque.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2774195/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python培訓教程:Python內建資料結構之雙向佇列Python資料結構佇列
- Python內建資料結構之雙向佇列Python資料結構佇列
- Python培訓:Python內建資料結構之雙向佇列Python資料結構佇列
- Python技術分享:內建資料結構之雙向佇列Python資料結構佇列
- 資料結構之「雙端佇列」資料結構佇列
- python資料結構與演算法——棧、佇列與雙端佇列Python資料結構演算法佇列
- Python:內建資料結構_字串Python資料結構字串
- 資料結構-雙向連結串列(Python實現)資料結構Python
- 資料結構之「佇列」資料結構佇列
- PTA 雙端佇列 資料結構佇列資料結構
- 資料結構-迴圈佇列(Python實現)資料結構佇列Python
- Python內建資料結構--bytes、bytearrayPython資料結構
- JavaScript資料結構之-佇列JavaScript資料結構佇列
- 資料結構之佇列(Queue)資料結構佇列
- JavaScript資料結構之佇列JavaScript資料結構佇列
- python演算法與資料結構-佇列(44)Python演算法資料結構佇列
- python 內建資料結構-數值型Python資料結構
- 資料結構之雙向連結串列資料結構
- 重學資料結構之佇列資料結構佇列
- 資料結構學習之佇列資料結構佇列
- 三、資料結構演算法-棧、佇列、優先佇列、雙端佇列資料結構演算法佇列
- JavaScript資料結構之陣列棧佇列JavaScript資料結構陣列佇列
- python演算法與資料結構-雙向連結串列(40)Python演算法資料結構
- 併發程式設計理論 - AQS之雙向連結串列和條件佇列資料結構程式設計AQS佇列資料結構
- 資料結構 - 佇列資料結構佇列
- 資料結構-佇列資料結構佇列
- 【資料結構-----佇列】資料結構佇列
- 資料結構--陣列、單向連結串列、雙向連結串列資料結構陣列
- 資料結構之php實現佇列資料結構PHP佇列
- 資料結構二之棧和佇列資料結構佇列
- Java版-資料結構-佇列(陣列佇列)Java資料結構佇列陣列
- 資料結構-佇列、棧資料結構佇列
- 資料結構-佇列-樹資料結構佇列
- 畫江湖之資料結構【第二話:佇列和棧】佇列資料結構佇列
- 畫江湖之資料結構 [第二話:佇列和棧] 佇列資料結構佇列
- Python培訓教程分享:怎樣使用Pandas的內建資料結構繪圖?Python資料結構繪圖
- python資料結構之棧Python資料結構
- Python基礎之:Python的資料結構Python資料結構