列表作为栈使用
栈的特点
先进后出,后进先出
如何模拟栈?
- 先在堆栈尾部添加元素,使用 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 ,它被设计成可以快速从两端添加或弹出元素
代码语言:javascript复制# 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