列表作为栈使用

栈的特点

先进后出,后进先出

如何模拟栈?

  • 先在堆栈尾部添加元素,使用 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

最新文章

  1. nlp
  2. java程序打包成jar
  3. 搭建基于Jenkins salt-api的运维工具
  4. ASP.NET POST XML JSON数据,发送与接收
  5. myeclipse 引入jar包 (包括 jdbc 驱动引用)
  6. android 学习随笔十六(广播 )
  7. python字符串关键点总结
  8. 慕课网-安卓工程师初养成-4-12 Java循环跳转语句之 continue
  9. Mac 如何截屏(快捷键)
  10. PHP合并数组保留key值
  11. Ubuntu12.10硬盘安装
  12. [NOIP2011普及组]瑞士轮 JAVA实现
  13. JS快速排序和去重
  14. 在VM中安装Android4.4连接小米手环 之 在VM中安装Android4.4
  15. Android性能测试工具Emmagee
  16. canvas元素
  17. TestNG的使用方法
  18. Day07 (黑客成长日记) 函数的参数及作用
  19. [HTML/CSS]三角形
  20. Spring Security(二十三):6.5 The Default AccessDecisionManager(默认接入策略管理)

热门文章

  1. mongodb(27017、28017)未授权访问
  2. DC-8靶机
  3. Spring Cloud分区发布实践(6)--灰度服务-根据Header选择实例区域
  4. CVPR2021 | Transformer用于End-to-End视频实例分割
  5. docker报错Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
  6. ABP框架使用Oracle数据库,并实现从SQLServer中进行数据迁移的处理
  7. 在Linux系统上查找文件
  8. luogu P6239 奇怪的道路
  9. redis支持的数据类型有哪些?
  10. mac Charles抓包