Python Deque 模块使用详解

yizhihongxing

Python Deque 模块使用详解

什么是Deque

Deque是 “double-ended queue”(双端队列)的缩写,在Python中是一个数据结构。它是一个可在两端添加和删除元素的序列,通俗点说它是一种可以在两端进行操作的序列。

Deque的主要方法

Deque包含以下方法:

方法 描述
append(x) 向右侧添加x元素
appendleft(x) 向左侧添加x元素
clear() 销毁deque,清除数据
count(x) 统计x出现次数
extend(iterable) 在右侧添加可迭代对象
extendleft(iterable) 在左侧添加可迭代对象
pop() 弹出右侧元素
popleft() 弹出左侧元素
remove(x) 删除deque中的x元素,如果没有引发ValueError错误
reverse() 反向deque中现有元素
rotate(n) 向右循环移动n步。如果n是负数,则向左旋转

Deque的示例

下面是两个操作deque的示例,一个是数组倒置,一个是滑动窗口。

数组倒置

from collections import deque

def reverse(arr):
    d = deque()
    for i in arr:
        d.appendleft(i)
    return list(d)

arr = [1, 2, 3, 4, 5]
print(reverse(arr)) # [5, 4, 3, 2, 1]

滑动窗口

from collections import deque

def window(arr, k):
    d = deque()
    res = []
    for i in range(len(arr)):
        if i >= k and d[0] <= i - k: # 检查左端是否超过滑动窗口长度
            d.popleft()
        while d and arr[d[-1]] <= arr[i]: # 检查右端丢弃元素,保证队列单调不升
            d.pop()
        d.append(i) # 将当前下标插入队列
        if i >= k - 1:
            res.append(arr[d[0]]) # 左端元素为窗口最大值
    return res

arr = [1,3,-1,-3,5,3,6,7]
print(window(arr, 3)) # [3, 3, 5, 5, 6, 7]

以上示例展示了如何使用deque进行数组倒置和滑动窗口计算,其语法简单易懂,易于编写。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Deque 模块使用详解 - Python技术站

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

相关文章

  • python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决办法

    Python使用pip安装模块出现ReadTimeoutError:HTTPSConnectionPool的解决办法 在Python中,使用pip安装模块是非常常见的操作。但是,在使用pip安装模块时,有时会出现ReadTimeoutErrorHTTPSConnectionPool的错误。本文将详细讲解使用pip安装模块出现ReadTimeoutError:…

    python 2023年5月13日
    00
  • Python 修改CSV文件实例详解

    让我们详细讲解“Python 修改CSV文件实例详解”的完整攻略。 更新CSV文件基础知识 CSV文件是指逗号分隔值文件,通常用于在计算机之间交换表格数据。每行表示为一行,而每个字段之间用逗号分隔。在Python中,我们可以使用内置的csv模块来处理CSV文件。 在处理CSV文件时,我们通常会涉及到以下操作: 读取CSV文件并获取所有行和列。 修改CSV文件…

    python 2023年6月3日
    00
  • 如何使用Python实现斐波那契数列

    下面是详细讲解如何使用Python实现斐波那契数列的完整攻略。 什么是斐波那契数列? 斐波那契数列是指这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列可以用如下递推式表示: F(0) = 0,F(1) = 1 F(n) = F(n-1) + F(n-2) (n≥2,n∈N*) 斐波那契数列是一种非常有趣的数列,它的特点是前两…

    python 2023年6月5日
    00
  • 教你用python实现一个无界面的小型图书管理系统

    教你用 Python 实现一个无界面的小型图书管理系统 简介 本文将介绍如何用 Python 实现一个无界面的小型图书管理系统。该图书管理系统包括以下功能: 显示所有图书 按照图书名称搜索图书 按照图书作者搜索图书 借出图书 归还图书 准备工作 在开始实现前,需要先安装 Python3 和相关模块。本文采用的是 SQLite 数据库,需要安装 SQLite3…

    python 2023年5月30日
    00
  • python3.x zip用法小结

    Python3.x zip用法小结 概述 在Python中,zip函数是非常常用的函数之一,它可以将多个可迭代对象合并成一个元组类型的可迭代对象。 其中,可迭代对象可以是列表、元组、集合、字典等类型,但它们之间的长度需要相等,否则会按照最短长度进行压缩。 zip() 函数的简单格式如下: zip(*iterables) 代码示例 示例1 在这个示例中,我们将…

    python 2023年5月20日
    00
  • 详解Python 移动或复制文件和目录

    Python提供了shutil模块来移动、复制文件和目录,该模块支持文件和目录的拷贝、重命名、删除等操作。使用shutil模块,我们可以轻松地在Python中完成文件和目录的操作。 拷贝文件 要拷贝文件,可以使用shutil模块的copy2函数。以下是拷贝文件的示例: import shutil src_file = ‘source_file.txt’ ds…

    python-answer 2023年3月25日
    00
  • python opencv之SURF算法示例

    Python OpenCV之SURF算法示例 本文将介绍如何使用Python OpenCV库实现SURF算法,并提供两个示例说明。 SURF算法简介 SURF(Speeded Up Robust Features)算是一种用于图像特征提取和匹配的算法。它是SIFT算法改进版本,具有更快的速度和更好的鲁棒性。SURF算法的要步骤包括构建尺度空间、算Hessia…

    python 2023年5月14日
    00
  • 详解Python发送email的三种方式

    下面是“详解Python发送email的三种方式”的完整实例教程。 前言 无论是个人还是企业,发送邮件是经常需要的一个功能,Python提供了多种发送邮件的方式,本文将详细介绍三种方式。 方式一:使用smtplib库发送邮件 代码示例 import smtplib from email.mime.text import MIMEText from email…

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