Python双端队列deque的实现

Python双端队列deque的实现

双端队列deque即"double-ended queue",是一种具有队列和栈的性质的数据结构。deque可以从队列的两端插入和删除元素。Python官方提供了collections模块中的deque数据类型,可以实现双端队列的操作。本文将详细讲解如何使用Python中的deque来实现双端队列的操作。

创建deque

首先,需要导入collections模块,然后创建一个空的deque对象。

import collections

deque_example = collections.deque()

添加元素

从右边添加

可以使用deque对象的append()方法,将元素添加到双端队列的右边。

import collections

deque_example = collections.deque()

deque_example.append(10)
deque_example.append(20)

print(deque_example)
# 输出: deque([10, 20])

从左边添加

使用deque对象的appendleft()方法,将元素添加到双端队列的左边。

import collections

deque_example = collections.deque()

deque_example.appendleft(10)
deque_example.appendleft(20)

print(deque_example)
# 输出: deque([20, 10])

删除元素

从右边删除

可以使用deque对象的pop()方法,将双端队列的右侧元素删除并返回。

import collections

deque_example = collections.deque([10, 20, 30])

deque_example.pop()

print(deque_example)
# 输出: deque([10, 20])

从左边删除

使用deque对象的popleft()方法,将双端队列的左侧元素删除并返回。

import collections

deque_example = collections.deque([10, 20, 30])

deque_example.popleft()

print(deque_example)
# 输出: deque([20, 30])

查看队列元素

可以直接打印deque对象,也可以使用迭代器(iterator)的方式来访问双端队列中的元素。

import collections

deque_example = collections.deque([10, 20, 30])

# 直接打印双端队列对象
print(deque_example)
# 输出: deque([10, 20, 30])

# 使用迭代器来访问双端队列中的元素
for i in deque_example:
    print(i)
# 输出:
# 10
# 20
# 30

示例1

下面是一个简单的双端队列实现的示例,能够将整数列表按顺序压入双端队列并从中间弹出。

import collections

deq = collections.deque()
data = [10, 20, 30, 40, 50]

for i in data:
    deq.append(i)

while len(deq) != 0:
    print(deq.popleft())
    if len(deq) != 0:
        print(deq.pop())

输出:

10
50
20
40
30

说明:

在上例中,我们首先创建了一个空的双端队列deq,并且创建了一个整形列表data。接下来我们将data中的所有元素按顺序压入双端队列deq中。

接下来,我们使用while循环来将队列中的元素依次取出,并交替从左边和右边弹出,直到双端队列deq为空。

示例2

下面是一个基于双端队列实现的循环队列Deque队列示例,能够支持添加数据、弹出数据、队列旋转等操作。

import collections

maximum_size = 5
deque_example = collections.deque(maxlen=maximum_size)

for _ in range(maximum_size):
    deque_example.append(101)

print(deque_example)

deque_example.appendleft(102)
print(deque_example)

deque_example.rotate(2)
print(deque_example)

deque_example.rotate(-1)
print(deque_example)

输出:

deque([101, 101, 101, 101, 101], maxlen=5)
deque([102, 101, 101, 101, 101], maxlen=5)
deque([101, 101, 102, 101, 101], maxlen=5)
deque([101, 102, 101, 101, 101], maxlen=5)

说明:

在上例中,我们创建了一个最大长度为5的双端队列deque_example。通过使用for循环将5个元素插入到队列中。接下来,我们使用appendleft(102)函数在左边插入整数102。然后,我们使用rotate(2)函数将队列向右旋转两个元素。最后,我们使用rotate(-1)函数将队列向左旋转一个元素。

通过此例,我们可以看到deque队列的跨结构灵活性,即可以作为队列而使用,也可以作为栈而使用。在此基础上旋转移位等操作也能方便地进行。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python双端队列deque的实现 - Python技术站

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

相关文章

  • python数据清洗中的时间格式化实现

    请看下面的内容。 Python数据清洗中的时间格式化实现 时间是数据清洗过程中经常遇到的数据类型之一,常常需要对其进行格式化或转换,以满足具体的需求。Python是一门流行的数据处理语言,在处理时间格式方面也提供了许多方便的工具和库。本文将针对Python数据清洗中的时间格式化实现,介绍time、datetime、pandas等几个python标准库的使用方…

    python 2023年6月2日
    00
  • 使用python模拟命令行终端的示例

    使用Python模拟命令行终端是一个十分有趣和有用的项目,相信会有很多人对此感兴趣。下面我将详细讲解使用Python模拟命令行终端的完整攻略。 准备工作 在开始前,你需要安装好Python环境,并熟悉Python基本语法。具体步骤如下: 前往官方网站下载Python:https://www.python.org/downloads/ 安装Python,并配置…

    python 2023年6月3日
    00
  • Python 图像处理之PIL库详解用法

    Python 图像处理之PIL库详解用法 PIL库简介 Python Imaging Library(PIL)是Python的第三方模块,用于图像处理相关的应用。 安装PIL库 PIL版本更新较慢,建议直接安装Pillow,Pillow是PIL的一个分支项目,它基本保留了PIL的所有功能,并在此基础上提供了一些新的功能以及增强。 可以通过pip安装Pillo…

    python 2023年5月19日
    00
  • python实现弹跳小球

    下面是关于Python实现弹跳小球的完整攻略。 1. 弹跳小球的基本原理 我们知道,当一个物体撞击到另一个物体时,会发生弹性碰撞。在弹性碰撞过程中,当球撞到地面时,球会被反弹。反弹的高度减少,直到球停止弹跳。 弹跳小球的动画演示了一种物理现象,其中球的运动被基于物理和运动学公式计算出来,在屏幕上绘制出连续的球运动和反弹的动画。 2. Python实现弹跳小球…

    python 2023年6月13日
    00
  • python re的findall和finditer的区别详解

    Python re 的 findall 和 finditer 的区别详解 什么是 re re 是 Python 中的一个库,用于进行正则表达式操作。正则表达式是一种强大的模式匹配语言,可以用来匹配特定格式的字符串。 findall re.findall() 方法可以用来查找字符串中所有与正则表达式匹配的子串,并将其以列表的形式返回。以下是示例代码: impo…

    python 2023年6月3日
    00
  • python 实现两个线程交替执行

    要实现两个线程交替执行,可以通过线程同步技术,如锁、条件变量来实现。下面我详细讲解一下完整攻略: 创建两个线程对象 首先,我们需要创建两个线程对象,该线程对象实例化Thread类即可。例如: import threading thread1 = threading.Thread(target=func1) thread2 = threading.Thread…

    python 2023年5月19日
    00
  • 编写Python脚本来获取Google搜索结果的示例

    编写Python脚本来获取Google搜索结果的示例 在本攻略中,我们将介绍如何使用Python编写脚本来获取Google搜索结果。我们将使用第三方库googlesearch-python来实现这个功能。 步骤1:安装googlesearch-python库 在使用googlesearch-python库之前,我们需要先安装它。我们可以使用pip命令来安装g…

    python 2023年5月15日
    00
  • Python 模拟员工信息数据库操作的实例

    Python模拟员工信息数据库操作的实例包括以下几个步骤: 1. 设计数据库 首先需要确定员工信息数据库的表格结构,包括表名,字段名和数据类型等。考虑到员工信息可能包括姓名、工号、部门、联系方式等内容,可以设计一个名为employees的表格,包括以下字段: id: 员工ID,使用整数类型,设置为主键 name: 员工姓名,使用字符串类型,长度为64 job…

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