python双端队列原理、实现与使用方法分析


Posted in Python onNovember 27, 2019

本文实例讲述了python双端队列原理、实现与使用方法。分享给大家供大家参考,具体如下:

双端队列

双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构。

双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。

操作

Deque() 创建一个空的双端队列
add_front(item) 从队头加入一个item元素
add_rear(item) 从队尾加入一个item元素
remove_front() 从队头删除一个item元素
remove_rear() 从队尾删除一个item元素
is_empty() 判断双端队列是否为空
size() 返回队列的大小

实现

class Deque(object):
  """双端队列"""
  def __init__(self):
    self.items = []
  def is_empty(self):
    """判断队列是否为空"""
    return self.items == []
  def add_front(self, item):
    """在队头添加元素"""
    self.items.insert(0,item)
  def add_rear(self, item):
    """在队尾添加元素"""
    self.items.append(item)
  def remove_front(self):
    """从队头删除元素"""
    return self.items.pop(0)
  def remove_rear(self):
    """从队尾删除元素"""
    return self.items.pop()
  def size(self):
    """返回队列大小"""
    return len(self.items)
if __name__ == "__main__":
  deque = Deque()
  deque.add_front(1)
  deque.add_front(2)
  deque.add_rear(3)
  deque.add_rear(4)
  print deque.size()
  print deque.remove_front()
  print deque.remove_front()
  print deque.remove_rear()
  print deque.remove_rear()

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python模块学习 re 正则表达式
May 19 Python
python实现博客文章爬虫示例
Feb 26 Python
Python中str.format()详解
Mar 12 Python
Python实现读取json文件到excel表
Nov 18 Python
python中cPickle类使用方法详解
Aug 27 Python
python实现文本界面网络聊天室
Dec 12 Python
对Django url的几种使用方式详解
Aug 06 Python
Python udp网络程序实现发送、接收数据功能示例
Dec 09 Python
Python正则表达式急速入门(小结)
Dec 16 Python
Python Numpy中数据的常用保存与读取方法
Apr 01 Python
Keras预训练的ImageNet模型实现分类操作
Jul 07 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
Jul 09 Python
Python实现RGB与HSI颜色空间的互换方式
Nov 27 #Python
OpenCV+Python--RGB转HSI的实现
Nov 27 #Python
解决pycharm启动后总是不停的updating indices...indexing的问题
Nov 27 #Python
python的range和linspace使用详解
Nov 27 #Python
python定间隔取点(np.linspace)的实现
Nov 27 #Python
Python进程池Pool应用实例分析
Nov 27 #Python
python进程池实现的多进程文件夹copy器完整示例
Nov 27 #Python
You might like
php下删除字符串中HTML标签的函数
2008/08/27 PHP
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
php调用mysql存储过程实例分析
2014/12/29 PHP
php查看网页源代码的方法
2015/03/13 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
js实现进度条的方法
2015/02/13 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
使用Node.js给图片加水印的方法
2016/11/15 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
2016/12/26 Javascript
Angularjs 实现移动端在线测评效果(推荐)
2017/04/05 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
利用npm 安装删除模块的方法
2018/05/15 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
ES6中Promise的使用方法实例总结
2020/02/18 Javascript
[01:10]3.19DOTA2发布会 三代刀塔人第一代
2014/03/25 DOTA
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
Python字符串的全排列算法实例详解
2019/01/07 Python
Python实战之制作天气查询软件
2019/05/14 Python
python使用opencv resize图像不进行插值的操作
2020/07/05 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
小学师德师风整改措施
2014/10/27 职场文书
领导欢迎词致辞
2015/01/23 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
舌尖上的中国观后感
2015/06/02 职场文书
博物馆观后感
2015/06/05 职场文书
MySQL中varchar和char类型的区别
2021/11/17 MySQL
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android