1.双向队列

   collections.deque 类(双向队列)是一个线程安全、可以快速从两端添加或者删除元素的数据类型。

  rotate和popleft操作,rorate可以把前后元素换位。popleft可以从左边删除元素,extendleft可以从左边添加元素。

>>> from collections import deque  # 导入deque模块
>>> dq = deque(range(10), maxlen=10) # deque可以有maxlen参数,限制元素的个数
>>> dq
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)
>>> dq.rotate(3) # rotate旋转操作接受一个参数 n,当 n > 0 时,队列的最右边的 n 个元素会被移动到 队列的左边。当 n < 0 时,最左边的 n 个元素会被移动到右边。
>>> dq
deque([7, 8, 9, 0, 1, 2, 3, 4, 5, 6], maxlen=10)
>>> dq.rotate(-4)
>>> dq
deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], maxlen=10)
>>> dq.appendleft(-1)
>>> dq
deque([-1, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)
>>> dq.extend([11, 22, 33])
>>> dq
deque([3, 4, 5, 6, 7, 8, 9, 11, 22, 33], maxlen=10)
>>> dq.extendleft([10, 20, 30, 40])
>>> dq
deque([40, 30, 20, 10, 3, 4, 5, 6, 7, 8], maxlen=10)

2.heapq 模块

  heapq 模块有两个函数:nlargest() 和 nsmallest()可以从一个集合中获得最大或者最小的 N 个元素列表。

import heapq
nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2] print(heapq.nlargest(3, nums)) # Prints [42, 37, 23] print(heapq.nsmallest(3, nums)) # Prints [-4, 1, 2]

最新文章

  1. javascript模式之模块模式
  2. css清除浮动的方法汇总
  3. C#微信公众号开发系列教程四(接收普通消息)
  4. C++ 复制控制之复制构造函数
  5. lustre文件系统部署流程
  6. CodeForces 166B (凸包)
  7. ZeroMQ(java)中对IO的封装(StreamEngine)
  8. iOS 图片拉伸的解释
  9. test generation和MBIST
  10. 索引 split2
  11. bzoj 3043: IncDec Sequence 模拟
  12. Jenkins中集成Gcov代码覆盖率报告
  13. co 模块
  14. 如何定制 Calico 网络 Policy - 每天5分钟玩转 Docker 容器技术(70)
  15. block,inline,inline-block的区别
  16. 近期编程总结(i think -1)
  17. QLayout删除所有布局
  18. GDT与LDT
  19. 【Git学习二】深入了解git checkout命令
  20. Django基础(一)

热门文章

  1. DCL实现多线程安全的高性能懒汉模式
  2. 9w5:第九周程序填空题1
  3. OCP 12c最新考试原题及答案(071-6)
  4. QTREE5 - Query on a tree V(LCT)
  5. 可变参数中size_t遇见的问题
  6. 【python】10分钟教你用python如何正确把妹
  7. python 入门级教你如何拿到小姐姐微信
  8. 你不可不知的数据库northwind
  9. python2与python3差异,以及如何写两者兼容代码
  10. CocoaPods的PodSpec.json文件用法