python collections 模块中的 deque

ESP32-CAM搭建Arduino及简单使用 配置环境 方法一 文件 → 首选项 http://wechat.doit.am/package_esp8266com_index.json https://dl.espressif.com/dl/package_esp32_index.json 工具 → 开发板 → 开发板管理器 等待安装 方法二 https://github.com/espressif/arduino-esp32 Arduino安装目录下,找到hardware文件夹 建立文件夹espressif,然后在里面再建立一个esp32文件夹 阅读详情

collections.deque介绍

collections 是 python 内建的一个集合模块,里面封装了许多集合类,其中队列相关的集合只有一个:deque。
deque 是双边队列(double-ended queue),具有队列和栈的性质,在 list 的基础上增加了移动、旋转和增删等。

常用方法
d = collections.deque([])
d.append('a') # 在最右边添加一个元素,此时 d=deque('a')
d.appendleft('b') # 在最左边添加一个元素,此时 d=deque(['b', 'a'])
d.extend(['c','d']) # 在最右边添加所有元素,此时 d=deque(['b', 'a', 'c', 'd'])
d.extendleft(['e','f']) # 在最左边添加所有元素,此时 d=deque(['f', 'e', 'b', 'a', 'c', 'd'])
d.pop() # 将最右边的元素取出,返回 'd',此时 d=deque(['f', 'e', 'b', 'a', 'c'])
d.popleft() # 将最左边的元素取出,返回 'f',此时 d=deque(['e', 'b', 'a', 'c'])
d.rotate(-2) # 向左旋转两个位置(正数则向右旋转),此时 d=deque(['a', 'c', 'e', 'b'])
d.count('a') # 队列中'a'的个数,返回 1
d.remove('c') # 从队列中将'c'删除,此时 d=deque(['a', 'e', 'b'])
d.reverse() # 将队列倒序,此时 d=deque(['b', 'e', 'a'])
应用

1、可以使用 deque 的旋转来制作跑马灯:

import collections
import sys
import time

def marquee(length=50, speed=1, direction=1):
    """
    生成一个简单的跑马灯
    length:总长
    speed:每0.1秒的移动速度
    direction:0为向左,1为向右
    """
    if direction == 1:
        array = '>'
    else:
        array = '<'
    que = collections.deque([array])
    que.extend(['-'] * (length - 1)) # 形如'>------'
    while True:
        print('%s' % ''.join(que))
        if direction == 1:
            que.rotate(1 * speed)
        else:
            que.rotate(-1 * speed)
        sys.stdout.flush()
        time.sleep(0.1)

if '__main__' == __name__:
    marquee()

2、可以使用deque的旋转来解决约瑟夫问题:

""" 约瑟夫算法
据说著名犹太历史学家 Josephus 有过以下的故事:
在罗马人占领桥塔帕特后,39个犹太人与 Josephus 及他的朋友躲到一个洞中,
39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,
由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,
直到所有人都自杀身亡为止。然而 Josephus 和他的朋友并不想自杀,
问他俩安排的哪两个位置可以逃过这场死亡游戏?
"""
import collections
def ysf(a, b):
    d = collections.deque(range(1, a+1)) # 将每个人依次编号,放入到队列中
    while d:
        d.rotate(-b) # 队列向左旋转b步
        print(d.pop()) # 将最右边的删除,即自杀的人

if __name__ == '__main__':
    ysf(41,3) # 输出的是自杀的顺序。最后两个是16和31,说明这两个位置可以保证他俩的安全。
计算机视觉:AI生成内容(AIGC)对视觉领域的冲击 计算机视觉:AI生成内容(AIGC)对视觉领域的冲击​ 人工智能,计算机视觉,大模型,AI,在信息技术日新月异的当下,计算机视觉作为人工智能领域的关键分支,已经深度融入了我们生活与工作的各个层面。从安防监控系统里精准的人脸识别,助力维护公共安全;到工业生产线上高效的产品质量检测,保障产品品质;再到医疗影像分析中为疾病诊断提供有力支持,计算机视觉技术凭借其对视觉信息的强大处理与理解能力,不断推动着各行业的发展与变革。 阅读详情

相关推荐

从BIOS到路由器:深入拆解SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)奥秘

本文深入解析SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)技术,从BIOS到路由器的应用场景出发,详细介绍了其架构精髓、典型连接方案、时序设计及性能优化方法。通过实际案例和参数对比,帮助开发者掌握NOR Flash在嵌入式系统中的关键作用与设计技巧,提升电路设计效率与可靠性。

weixin_30522183的博客 491

【Python】详解 collections.deque

一、绪论 collections 作为 Python 的内建集合模块,实现了许多十分高效的特殊容器数据类型,即除了 Python 通用内置容器: dict、list、set 和 tuple 等的替代方案。在IDLE 输入 help(collections) 可查看帮助文档,其中常见的类/函数如下: 名称 功能 namedtuple 用于创建具有命名字段的 tuple 子...

闻韶 1万+

双轮差动机器人SLAM实战:轮速里程计从建模到精度验证(附Matlab代码)

本文详细介绍了双轮差动机器人SLAM系统中轮速里程计的实现全流程,包括核心原理、建模方法、Matlab代码实现及精度验证。通过轮速仪数据建模和连续积分算法,提升定位精度,并附有完整的误差分析和工程优化技巧,为开发者提供实用参考。

weixin_29050271的博客 224

【Python】全面掌握 Collections Deque:队列与栈的高效实现及动态内存管理指南

在本文中,我们将深入探讨 Python 的 collections 模块中的 deque 类,一个灵活且功能强大的容器类型,专为高效地执行两端操作而设计。deque(双端队列)允许用户在队列的两端迅速添加和删除元素,这些操作的时间复杂度为 O(1),使得 deque 成为实现队列和栈结构的理想选择。此外,我们还将讨论 deque 在内存管理上的优势,如何通过 maxlen 参数控制容器大小,以及 deque 在处理大量数据时如何减少性能损耗。

lph159的博客 5142

飞塔防火墙和paloalto防火墙构建ipsec

一、配置fortigate防火墙1.防火墙配置上网功能1.1配置fortigate的wan1接口IP为100.100.100.2/24VLAN交换internal,IP地址为192.168.156.99/24。开启DHCP分配IP地址范围为192.168.156.110-192.168.156.2101.2配置访问互联网的缺省路由1.3配置访问互联网的安全策略2.配置与Paloalto防火墙的IPSECVPN。

weixin_44675999的博客 3738

STM32+A4988控制步进电机

基于A4988芯片驱动42步进电机,在STM32F1上进行测试,最高可以实现16细分。

个人博客 4万+

python中的deque详解

deque(双端队列)是Python标准库模块中的一个类,它支持从两端快速添加和删除元素。deque为固定大小或者可变大小的队列提供了线程安全的实现,并且它比使用列表(list)来实现相同的功能更为高效。dequedequedequemaxlendequedeque下面是deque。

AI浩 1万+

手把手教你用ROS和Gazebo搭建Unitree A1机器狗仿真环境(含URDF/Xacro详解)

本文详细介绍了如何使用ROS和Gazebo搭建Unitree A1机器狗的仿真环境,涵盖URDF/Xacro文件编写、Gazebo物理引擎集成及ROS控制实现。通过实战指南,帮助开发者掌握四足机器人仿真技术,提升开发效率。

bush的博客 278

python deque函数_一个不得不了解的Python库——collections

基本介绍Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上,提供了几个额外的数据类型,如下。这些类在平时Python代码中用处非常大,熟练掌握这个模块,可以大大简化Python代码,提高Python代码逼格。import collectionsprint collections.__all__['...

weixin_39539807的博客 2407

【超详细】磁力计数据读取--以IST8310为例

第一章讲了IST8310的特性,I2C通信,最高支持400kHz通信速率,14位或者16位自适应数据输出等特性第二章讲了内部结构第三章讲了电气特性第四章讲了如何联系他们然后数据手册就没了。。。在大疆的开发手册中找到了寄存器的手册,如下:点开I2C配置选项, 下图是配好的:观察IST8310的数据手册,发现其支持最大400kHz的I2C通信速率,也就是快速I2C模式,所以第一行I2C Speed Mode我们选Fast Mode同时不要忘记了在C板中I2C3的两个IO口分别是PA8和PC9(一般来说都是这两个

lmh_12138的博客 1万+

RK3588 固定hdmiin的dev/videoX节点

RK3588 固定hdmiin的dev/videoX节点

目前从事linux驱动开发,多交流多学习吧 2050

Python collections 模块中的 deque

总的来说,deque 队列相当于 list 的扩展,加入了一些可以从左侧对元素进行操作的方法,方便我们实现更复杂的功能。与传统的 list 对象一样,通过 append() 方法可以在 deque 队列右侧添加元素。将 Python 内置的 list 对象通过 deque() 函数转换为 deque 对象。和 list 对象一样,也是从左向右获取第一个等于给定值的元素对应的索引值。可以指定队列的最大长度,当元素超出时,会自动从队列另一端丢弃多余的元素。输入参数是正数时可以实现元素循环右移。

u011699626的博客 1249

Simulink开发项1000例实战专栏--实例148:构建一个完整的电动汽车电池SOH评估仿真模型,包括电池建模模块、数据采集模块、SOH估算算法模块以及性能评估模块

电动汽车的动力电池是其核心部件,而电池的健康状态(State of Health, SOH)直接影响车辆的续航能力和使用寿命。SOH通常定义为当前电池容量与初始容量的比值,用百分比表示。通过基于MATLAB/Simulink平台的SOH评估仿真,可以实时监测电池的退化情况,并为电池管理系统(BMS)提供决策依据。本项目旨在构建一个完整的电动汽车电池SOH评估仿真模型,包括电池建模模块、数据采集模块、SOH估算算法模块以及性能评估模块,并通过仿真验证SOH评估的准确性。

xiaoheshang_123的博客 342

Python collections模块之deque()详解

Python collections模块之deque详解deque()append()appendleft()extend()extendleft()pop()popleft()count()insert(index,obj)rotate() collections模块 ==> Python标准库,数据结构常用的模块;collections包含了一些特殊的容器,针对Python内置的容器,例如list、dict、set和tuple,提供了另一种选择。 collections模块常用类型有: 双

chl183的博客 10万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

python中的deque模块(collections的deque模块)

insert(index,value), 在index位置上,插入value值, 注意顺序。rotate(n) , 将队列 向右旋转n步(默认n=1)。如果n为负,则向左旋转。index(value,start=None,end=None), 怎么使用请看代码。popleft() 方法弹出元素,从头部弹出,并且返回弹出的这个元素。pop() 方法弹出元素,从尾部弹出,并且返回弹出的这个元素。运行结果,我们可以看到,

Mogul的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

如何使用 Python collections 模块中的 deque 数据结构

在 Python 中,`collections` 模块不仅提供了丰富的内建数据结构,其中的 `deque`(双端队列)是一个非常强大且灵活的数据结构。`deque` 与普通的列表(`list`)类似,但其在两端的插入和删除操作上具有更高的效率。本文将深入探讨如何使用 `deque`,以及它在实际应用中的优势。

2413

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Python collections 模块中的 deque(队列)

collections.deque介绍 collections 是 python 内建的一个集合模块,里面封装了许多集合类,其中队列相关的集合只有一个:deque。deque 是双边队列(double-ended queue),具有队列和栈的性质,在 list 的基础上增加了移动、旋转和增删等。 常用方法 d = collections.deque([]) d.append('a') # 在最右边...

大头的博客 3576

python -- python collections模块中的deque

在python2.4中,模块collections只为我们提供了一种类型deque,这个类型的实例就是“双端队列(Double-Ended  Queue)” 如何理解deque? deque就是双端队列,是一种具有队列和栈的性质的数据结构,适合于在两端添加和删除,类似与序列的容器。 常用的方法 d=deque([])        #创建一个空的双队列 d.append(it

yuehuanjue的专栏 4117

python学习——collections模块之deque双端队列

一、collections模块介绍 colletions是python内置的模块,里面有很多数据类型['deque', 'defaultdict', 'namedtuple', 'UserDict', 'UserList', 'UserString', 'Counter', 'OrderedDict', 'ChainMap'],这些数据类型让我们内置的list,dict,tuple,set操作更加方便。 二、deque(双端队列) # 官方说明 * deque list-like cont

小爬虫的博客 1047

python collections deque_一文了解Python collections模块中的deque用法

collections.deque介绍collections 是 python 内建的一个集合模块,里面封装了许多集合类,其中队列相关的集合只有一个:deque。deque 是双边队列(double-ended queue),具有队列和栈的性质,在 list 的基础上增加了移动、旋转和增删等。常用方法d=collections.deque([])d.append('a')#在最右边添加一个...

weixin_42542420的博客 512

python collections deque_Python collections模块使用方法详解

一、collections模块1.函数namedtuple(1)作用:tuple类型,是一个可命名的tuple(2)格式:collections(列表名称,列表)(3)​返回值:一个含有列表的类(4)例子​:import collections# help(collections.namedtuple)Point = collections.namedtuple("Point",['x','y']...

weixin_28904519的博客 628

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

import collectionsimport threadingimport timecandle = collections.deque(xrange(5))def burn(direction, nextSource):while True:try:next = nextSource()except IndexError:breakelse:print '%8s: %s' % (direc...

weixin_33871933的博客 185

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

目录 deque简介 知识点: deque的各种方法 1. append() 2. appendleft() 3. clear() 4. copy() 5. count(value) 6. extend() 7. extendleft() 8. index(value, start=None, stop=None) 9. insert(index, p_object) 1...

Catalog_Spri的博客 1347

python!collections模块中的deque

列表除了可以当做堆栈来使用之外,也可以把列表当做队列用,只是在队列里第一加入的元素,第一个取出来;但是拿列表用作这样的目的效率不高。在列表的最后添加或者弹出元素速度快,然而在列表里插入或者从头部弹出速度却不快(因为所有其他的元素都得一个一个地移动)。   #collections是Python一个内建集合模块,现在导入其中一个名为双向列表的模块deque,实现快速插入删除。  常用的方法有: ...

与其临渊羡鱼,不如进而结网。 999
上一篇: mysql/oracle的字段连接
下一篇: 二分类指标:正确率、精确率、召回率等的区别
HappyRocking
博客等级 码龄12年 222粉丝 176原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值