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.
本文來自千鋒教育,轉載請注明出處。
總結
以上是生活随笔為你收集整理的Python教程:Python内置数据结构之双向队列!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python工程师求职必知的经典面试题!
- 下一篇: Python教程:Python基础知识点