列表作為棧使用
棧的特點
先進后出,后進先出
如何模擬棧?
- 先在堆棧尾部添加元素,使用 append()
- 然后從堆棧頂部取出一個元素,使用 pop()
# 模擬棧 stack = [1, 2, 3, 4, 5] # 進棧 stack.append(6) stack.append(7) # 查看棧 print(stack) # 出棧 print(stack.pop()) print(stack) # 輸出結果 [1, 2, 3, 4, 5, 6, 7] 7 [1, 2, 3, 4, 5, 6]
列表作為隊列使用
隊列的特點
先進先出,后進后出
list 能實現隊列嗎?
可以,但不推薦
- 列表用作先進先出的場景非常低效
- 因為在列表的末尾進行添加、移出元素非常快
- 但是在列表的頭部添加、移出元素缺很慢,因為列表其余元素都必須移動一位
如何模擬隊列?
使用 collections.deque ,它被設計成可以快速從兩端添加或彈出元素
# collections.deque from collections import deque # 聲明隊列 queue = deque(["polo", "yy", "mike"]) # 插入隊列 queue.append("ok") queue.append("world") print(queue) # 移出隊列 print(queue.popleft()) print(queue.popleft()) # 輸出結果 deque(['polo', 'yy', 'mike', 'ok', 'world']) polo yy