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 相关文章推荐
linux系统使用python监测网络接口获取网络的输入输出
Jan 15 Python
安装python时MySQLdb报错的问题描述及解决方法
Mar 20 Python
对pandas中to_dict的用法详解
Jun 05 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
解决python3 安装不了PIL的问题
Aug 16 Python
pytorch下使用LSTM神经网络写诗实例
Jan 14 Python
Python+PyQt5实现灭霸响指功能
May 25 Python
Python依赖包迁移到断网环境操作
Jul 13 Python
Django配置Bootstrap, js实现过程详解
Oct 13 Python
利用python 下载bilibili视频
Nov 13 Python
python 爬虫如何实现百度翻译
Nov 16 Python
浅析python实现动态规划背包问题
Dec 31 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
JAVA/JSP学习系列之四
2006/10/09 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
PHP7 mongoDB扩展使用的方法分享
2019/05/02 PHP
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
Avalonjs双向数据绑定与监听的实例代码
2017/06/23 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
2019/02/21 Javascript
详解vue-video-player使用心得(兼容m3u8)
2019/08/23 Javascript
VUE.js实现动态设置输入框disabled属性
2019/10/28 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
python中的sort方法使用详解
2014/07/25 Python
python使用win32com库播放mp3文件的方法
2015/05/30 Python
深入解析Python中的__builtins__内建对象
2016/06/21 Python
Python中安装easy_install的方法
2018/11/18 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
Django中modelform组件实例用法总结
2020/02/10 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
用Python自动清理系统垃圾的实现
2021/01/18 Python
Linux Interview Questions For software testers
2012/06/02 面试题
餐厅总厨求职信
2014/03/04 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
考生诚信考试承诺书
2014/05/23 职场文书
销售会议开幕词
2015/01/28 职场文书
全国爱牙日活动总结
2015/02/05 职场文书
导游词格式
2015/02/13 职场文书
机关单位2016年法制宣传日活动总结
2016/04/01 职场文书
Python使用永中文档转换服务
2022/05/06 Python