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

yizhihongxing

下面就详细讲解一下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.sub bytes string详解

    对python数据清洗容易遇到的函数-re.sub bytes string详解 什么是数据清洗 数据清洗是一项重要的数据预处理工作,是指在数据挖掘和数据分析过程中,对于脏数据和无效数据进行筛选,以保证数据的准确性、有效性和完整性。在数据清洗的过程中,正则表达式是必不可少的工具之一。 re.sub函数 re.sub函数是Python标准库中处理正则表达式的函…

    python 2023年6月3日
    00
  • 一文搞懂关于 sys.argv 的详解

    一文搞懂关于 sys.argv 的详解 在Python中,我们可以使用命令行参数来实现一些特殊的操作。常见的处理命令行参数的方法是使用sys.argv。 sys.argv简介 sys.argv是Python系统模块sys中的一个系统参数列表,它是一个列表,其中第一个元素为程序名称,其余元素为传递给程序的命令行参数。如果没有传递任何参数,那么sys.argv默…

    python 2023年6月2日
    00
  • Python 调用API发送邮件

    Python调用API发送邮件 在本文中,我们将介绍如何使用Python调用API发送邮件。我们将使用requests库发送HTTP请求,并使用json库解析响应。 步骤1:导入必要的库 在使用Python调用API发送邮件之前,我们需要先导入必要的库: import requests import json 在上面的示例中,我们导入了requests和js…

    python 2023年5月15日
    00
  • 线程、网络和 Python

    【问题标题】:Thread, Network and Python线程、网络和 Python 【发布时间】:2023-04-01 23:58:01 【问题描述】: 我正在尝试创建一个连接两台(或更多)计算机的小聊天程序,所以我尝试了这个: import socket tcpSocket = socket.socket(socket.AF_INET,socke…

    Python开发 2023年4月8日
    00
  • Python回调函数用法实例详解

    Python回调函数用法实例详解 什么是回调函数? 回调函数(callback)是一种双向调用的技术,指通过函数参数将函数的指针传递给其他函数,实现对函数间的调用。调用者按预先约定的流程将函数指针作为参数传入供被调用者调用。 在Python中,回调函数通常传递的是一个可调用对象callable,可以是函数、方法或者类的实例等等。 回调函数的用途 回调函数常常…

    python 2023年6月3日
    00
  • 使用 python 和 pandas 将 OHLC 股票数据转换为不同的时间范围

    【问题标题】:Converting OHLC stock data into a different timeframe with python and pandas使用 python 和 pandas 将 OHLC 股票数据转换为不同的时间范围 【发布时间】:2023-04-07 21:08:01 【问题描述】: 关于使用Pandas 进行 OHLC 数据…

    Python开发 2023年4月8日
    00
  • python request 模块详细介绍

    以下是关于python requests模块详细介绍的攻略: python requests模块详细介绍 requests是Python中一个流行的HTTP库,可以用于向Web服务器发送HTTP请求和接收响应。以下是Python中requests模块的详细介绍: 发送HTTP请求 使用requests模块发送HTTP请求非常简单。以下是使用requests模…

    python 2023年5月14日
    00
  • Python实现的简单排列组合算法示例

    Python实现的简单排列组合算法示例 排列组合是数学中的一个重要概念,也是计算机编程中常用的算法之一。Python中,可以使用递归或迭代的方式实现排列组合算法。下面是一个简单的排列组合算法示例,包含详细的讲解和示例说明。 排列组合算法的定义 排列组合是指从n个同元素中取出m个元素的所有可能情况。其中,如果取出的素有顺序,称为排列;如果取出的素没有顺序,称为…

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