详解Python的collections模块中的deque双端队列结构

下面就详细讲解一下Python的collections模块中的deque双端队列结构。

1. 简介

首先来介绍一下deque,它是Python的collections模块提供的一个双端队列结构。deque支持从两端快速的append和pop操作,时间复杂度都是O(1),因此比传统的list在很多场景下都要更为高效。deque还提供了一些其他基础队列操作,如长度大小,双端队列的旋转等。

2. 使用

2.1 创建deque

下面代码展示如何创建一个deque。

from collections import deque

# 创建一个空的deque
d = deque()

# 在deque左边添加元素
d.appendleft(2)
d.appendleft(1)

# 在deque右边添加一个元素
d.append(3)

print(d)   # 输出: deque([1, 2, 3])

2.2 添加和删除元素

deque可以从两端添加和删除元素,可以使用append、appendleft、pop、popleft等方法来操作。

from collections import deque

d = deque([1,2,3])

# 在左端添加元素
d.appendleft(0)

# 在右端添加元素
d.append(4)

# 从左端删除元素
d.popleft()

# 从右端删除元素
d.pop()

print(d)   # 输出: deque([1, 2, 3])

2.3 deque转换成list

deque可以通过list方法转换成普通的list。

from collections import deque

d = deque([1,2,3])

# 将deque转换成list
l = list(d)

print(l)   # 输出: [1, 2, 3]

2.4 队列旋转

deque提供了一个方法叫rotate,可以把队列右移和左移。(右移的话,右侧元素会被移动到左侧,左侧元素移到右侧,但并不改变队列的相对顺序)

from collections import deque

d = deque([1,2,3,4,5])

# 右移两个位置
d.rotate(2)

print(d)   # 输出: deque([4, 5, 1, 2, 3])

下面是一个左移的例子。

from collections import deque

d = deque([1,2,3,4,5])

# 左移一个位置
d.rotate(-1)

print(d)   # 输出: deque([2, 3, 4, 5, 1])

3. 总结

以上就是关于Python collections模块中的deque双端队列结构的详细介绍。deque大大增加了Python队列的灵活性,可以快速的进行队列的操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python的collections模块中的deque双端队列结构 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python正则表达式中的re.S的作用详解

    Python正则表达式中的re.S的作用详解 在Python正则表达式中,re.S是一个特殊的标志,用于指定匹配任意字符,包含换行符。本文将为您细讲解re.S的作用和用法,并提供两个示例说明。 re.S的作用 re.S是re模块中的一个标志,用于指定匹配任意字符,包括换行符。在默认情况下,正则表达式只能匹配单行文本,即不包括换行符。但是,当我们使用.S标志时…

    python 2023年5月14日
    00
  • 对Django 中request.get和request.post的区别详解

    在 Django 中,request.GET 和 request.POST 是两个常用的属性,用于获取 GET 和 POST 请求中的参数。以下是两个示例,分别介绍了 request.GET 和 request.POST 的区别。 request.GET 获取 GET 请求参数 以下是一个示例,可以使用 request.GET 获取 GET 请求参数: fr…

    python 2023年5月15日
    00
  • Python SQL查询并生成json文件操作示例

    下面我为您详细讲解一下如何在 Python 中进行 SQL 查询并将结果生成为 JSON 文件的操作示例。 环境准备 首先,我们需要安装一些必要的模块,如 pymysql 和 json。可通过运行以下命令进行安装: pip install pymysql pip install json 连接数据库 连接数据库通常需要填写数据库地址、用户名、密码和库名等信息…

    python 2023年6月3日
    00
  • 基于python的mysql复制工具详解

    我将为您提供一份“基于python的mysql复制工具详解”的完整实例教程。 标题 什么是MySQL复制? MySQL复制是指将整个数据库或部分数据库从一个MySQL服务器复制到另一个MySQL服务器的过程。MySQL复制可用于实现高可用性和灾备恢复等操作。 MySQL复制有哪些组件? MySQL复制涉及两个或更多MySQL服务器的通信,主要有以下三个组件:…

    python 2023年5月13日
    00
  • python中defaultdict方法的使用详解

    Python中defaultdict方法的使用详解 defaultdict是Python标准库collections中的一个类,它和内置字典(dict)的用法大致相同,但有一个区别:当你访问一个不存在的键时,defaultdict会自动创建这个键并将其对应的值赋为一个默认值。 defaultdict的构造函数 defaultdict的构造函数和dict的构造…

    python 2023年5月13日
    00
  • 使用单个 Python 脚本从 Linux、Mac 和 Windows 上的剪贴板复制数据

    【问题标题】:Copy data from the clipboard on Linux, Mac and Windows with a single Python script使用单个 Python 脚本从 Linux、Mac 和 Windows 上的剪贴板复制数据 【发布时间】:2023-04-06 18:14:01 【问题描述】: 我正在尝试在 Pyt…

    Python开发 2023年4月7日
    00
  • Python webargs 模块的简单使用

    以下是“Python webargs 模块的简单使用”的完整攻略: 一、问题描述 在Python的Web开发中,我们经常需要处理HTTP请求参数。webargs是一个Python库,它提供了一种简单的方式来解析和验证HTTP请求参数。本文将详细讲解webargs模块的简单使用。 二、解决方案 2.1 安装webargs模块 在使用webargs模块之前,我们…

    python 2023年5月14日
    00
  • python字符串下标与切片及使用方法

    Python中字符串是一种常用的数据类型,它由一系列字符组成,可以使用下标和切片进行访问和操作。 字符串下标与访问 在Python中字符串的下标从0开始,可以通过下标来访问字符串中的某个字符。例如,要访问字符串中的第一个字符可以执行如下代码: s = "Hello, World!" print(s[0]) # Output: H 需要注意…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部