广告
返回顶部
首页 > 资讯 > 后端开发 > Python >简单介绍python的双向队列
  • 423
分享到

简单介绍python的双向队列

队列双向简单 2023-01-30 23:01:30 423人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

介绍   大家都知道利用 .append 和 .pop 方法,我们可以把列表当作栈或者队列来用(比如,把 append 和 pop(0) 合起来用,就能模拟栈的“先进先出”的特点)。但是删除列表的第一个元素(抑或是在第一个元素之前添加一个

介绍

  大家都知道利用 .append 和 .pop 方法,我们可以把列表当作栈或者队列来用(比如,把 append 和 pop(0) 合起来用,就能模拟栈的“先进先出”的特点)。但是删除列表的第一个元素(抑或是在第一个元素之前添加一个 元素)之类的操作是很耗时的,因为这些操作会牵扯到移动列表里的所有元素。这个时候双向队列就又作用了。

deque 是什么

  collections.deque 类(双向队列)是一个线程安全、可以快速从两端添加或者删除元素的数据类型。而且如果想要有一种数据类型来存 放“最近用到的几个元素”,deque 也是一个很好的选择。这是因为在新建一个双向队列的时候,你可以指定这个队列的大小,如果这个队列满员了,还可以从反向端删除过期的元素,然后在尾端添加新的元素。

下面用几个实例来说明如何使用双向队列以及带来了什么方便的处理方式。

一开始我们需要先初始化一个固定长度的双向队列便于我们实验。

说明:maxlen 是一个可选参数,代表这个队列可以容纳的元素的数量,不可变。

from collections import  deque
#双向队列
listdq=deque(range(10),maxlen=10)
print (listdq)

1.正向旋转(循环)

 说明:队列的旋转操作接受一个参数 n,当 n > 0 时,队列的最右边的 n 个元素会被移动到队列的左边。当 n < 0 时,最左边的 n 个元素会被 移动到右边。

#正向旋转
listdq.rotate(2)
print(listdq)

2.反向旋转(逆时针)

#反向旋转
listdq.rotate(-2)
print(listdq)

3.附加数据

说明:当试图对一个已满(len(d) == d.maxlen)的队列做尾部添加操作的时候,它头部的元素会被删除掉。注意在下一行里,元素 0 被删除 了。

#附加数据
listdq.appendleft(-1)
print(listdq)
listdq.append(10)
print(listdq)
 

4.扩展数据

说明:extendleft(iter) 方法会把迭代器里的元素逐个添加到双向队列的左边,因此迭代器里的元素会逆序出现在队列里。注意是逆序。

#扩展数据
listdq.extendleft([20,30,40])
print(listdq)
listdq.extend([50])
print(listdq)

以上代码结果如下:

双向列表和队列的方法介绍:

 

总结

本篇总结了列表和双向队列这两个类型的方法(object 类包含的方 法除外)。
双向队列实现了大部分列表所拥有的方法,也有一些额外的符合自身设 计的方法,比如说 popleft 和 rotate。但是为了实现这些方法,双向 队列也付出了一些代价,从队列中间删除元素的操作会慢一些,因为它 只对在头尾的操作进行了优化
append 和 popleft 都是原子操作,也就说是 deque 可以在多线程程序 中安全地当作先进先出的栈使用,而使用者不需要担心资源的问题。

--结束END--

本文标题: 简单介绍python的双向队列

本文链接: https://www.lsjlt.com/news/181388.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 简单介绍python的双向队列
    介绍   大家都知道利用 .append 和 .pop 方法,我们可以把列表当作栈或者队列来用(比如,把 append 和 pop(0) 合起来用,就能模拟栈的“先进先出”的特点)。但是删除列表的第一个元素(抑或是在第一个元素之前添加一个...
    99+
    2023-01-30
    队列 双向 简单
  • python中的json简单介绍
    这篇文章主要讲解了“python中的json简单介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python中的json简单介绍”吧! ...
    99+
    2022-10-18
  • python描述符的简单介绍
    这篇文章主要介绍“python描述符的简单介绍”,在日常操作中,相信很多人在python描述符的简单介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python描述符的简单介绍”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-01
  • python切片符号的简单介绍
    这篇文章主要讲解了“python切片符号的简单介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python切片符号的简单介绍”吧!1、下标符号中的冒号:构成切片符号,它具有可选参数star...
    99+
    2023-06-20
  • java数据结构中单向链表和双向链表的介绍
    这篇文章主要讲解了“java数据结构中单向链表和双向链表的介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java数据结构中单向链表和双向链表的介绍”吧!目录单向链表单链表图解代码双向链表...
    99+
    2023-06-20
  • 简单介绍Python的第三方库yaml
    目录一、yaml基本介绍二、适用场景三、基本的语法规则四、YAML支持的三种数据结构4.1 对象4.2 数组4.2.1 对象和数组4.3 纯量4.4 还有一些特殊符号4.4.1 — ...
    99+
    2022-11-12
  • Python运算符的使用简单介绍
    目录1、算术运算符2、赋值运算符3、比较运算符4、逻辑运算符5、位运算符6、运算符优先级和结合性1、算术运算符 Python 中常用运算符: 运算符说明实例结果+加22.4 + 15...
    99+
    2022-11-11
  • Python变量定义的简单使用介绍
    目录1、变量的定义2、变量的简单使用3、类型转换1、变量的定义 定义变量语法格式: variable_name = variable_name variable_name表示变量名;...
    99+
    2022-11-11
  • Python的类、继承和多态简单介绍
    这篇文章主要讲解了“Python的类、继承和多态简单介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python的类、继承和多态简单介绍”吧!类的定义假如要定义一个类 Point,表示二维...
    99+
    2023-06-17
  • 简单介绍Python中的几种数据类型
    大体上把Python中的数据类型分为如下几类: Number(数字) 包括int,long,float,complex String(字符串) 例如:hello,"he...
    99+
    2022-06-04
    几种 数据类型 简单
  • Python第三方常用模块openpyxl的简单介绍
    目录openpyxl创建文件Workbook() —创建 excel 文件Workbook.create_sheet() —创建 excel 工作簿Works...
    99+
    2022-11-11
  • Python可视化Matplotlib介绍和简单图形的绘制
    目录1. 什么是Matplotlib2. 实现一个最简单的Matplotlib画图以折线图为例2.1 matplotlib.pyplot模块2.2 图形绘制流程1.创建画布 – pl...
    99+
    2022-11-12
  • JavaScript的面向对象和它的封装、继承、多态简单介绍
    这篇文章主要介绍“JavaScript的面向对象和它的封装、继承、多态简单介绍”,在日常操作中,相信很多人在JavaScript的面向对象和它的封装、继承、多态简单介绍问题上存在疑惑,小编查阅了各式资料,整...
    99+
    2022-10-19
  • 简单介绍Python实现邮件自动下载的示例
    本篇文章给大家带来了关于Python的相关知识,详细介绍了如何利用Python语言实现邮件自动下载以及附件解析功能,文中的示例代码讲解详细,感下面一起来看一下,希望对大家有帮助。【相关推荐:Python3视频教程 】开始码代码之前,我们先来...
    99+
    2022-08-17
    python
  • 简单介绍使用Python解析并修改XML文档的方法
    问题 你想读取一个XML文档,对它最一些修改,然后将结果写回XML文档。 解决方案 使用 xml.etree.ElementTree 模块可以很容易的处理这些任务。 第一步是以通常的方式来解析这个文档。例...
    99+
    2022-06-04
    简单 文档 方法
  • 【Java面向对象】多态的详细介绍,简单易懂,看这一篇就够了
    文章目录 什么是多态多态的优点多态的分类重载式多态案例 重写式多态 多态的向上转型案例 多态的向下转型案例 什么是多态 A: 方法或对象具有多种形态,是面向对象的第三...
    99+
    2023-10-07
    java 数据结构 javascript jvm
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作