隊列,即先進先出的數據存儲容器。與棧(後進先出)相反。
Python中有單獨的模塊用來實現隊列,即collections中的deque。
deque初始化時,需要以列表作爲傳參。
from collections import deque
if __name__ == '__main__':
list1=[1,2.0,3+4j,5-6j,-7+8j,-9-1j,"breakloop"]
queue1=deque(list1)
print("queue1",queue1)
queue1.append("hello world")
print("queue1 append",queue1)
queue1.popleft()
print("queue1 pop left",queue1)
queue1.popleft()
print("queue1 pop left",queue1)
queue1.appendleft(2.0)
print("queue1 append left",queue1)
queue1.appendleft(1)
print("queue1 append letf",queue1)
queue1.pop()
print("queue1 pop",queue1)
queue1.pop()
print("queue1 pop",queue1)
相應輸出爲
queue1 deque([1, 2.0, (3+4j), (5-6j), (-7+8j), (-9-1j), 'breakloop'])
queue1 append deque([1, 2.0, (3+4j), (5-6j), (-7+8j), (-9-1j), 'breakloop', 'hello world'])
queue1 pop left deque([2.0, (3+4j), (5-6j), (-7+8j), (-9-1j), 'breakloop', 'hello world'])
queue1 pop left deque([(3+4j), (5-6j), (-7+8j), (-9-1j), 'breakloop', 'hello world'])
queue1 append left deque([2.0, (3+4j), (5-6j), (-7+8j), (-9-1j), 'breakloop', 'hello world'])
queue1 append letf deque([1, 2.0, (3+4j), (5-6j), (-7+8j), (-9-1j), 'breakloop', 'hello world'])
queue1 pop deque([1, 2.0, (3+4j), (5-6j), (-7+8j), (-9-1j), 'breakloop'])
queue1 pop deque([1, 2.0, (3+4j), (5-6j), (-7+8j), (-9-1j)])
deque提供了4個方法,append, appendleft, pop, popleft.
開發人員可以自定義隊列的左右段,哪邊是入口,哪邊是出口。利用該4個方法實現隊列的操作。