首页 > 编程语言 >python 实现队列

python 实现队列

时间:2023-08-13 21:57:32浏览次数:44  
标签:deque IndexError python 元素 队列 内容 移除 copy 实现

官方文档不推荐使用列表 因为列表删除第一个元素会把剩余元素向左移一位 速度很慢 官方推荐的是 collections下的deque 

记录一下 防止忘记 

from collections import deque

 

d = deque(‘内容’,maxlength) 内容可以是推导式 也可以直接写内容 内容写在一起 比如'123' 结果会自动分割成[’1‘,’2‘,’3‘]三个元素 想写成一个元素可以写成列表 [’123‘] maxlength是最大长度 设置了以后 deque达到最大长度 再增加不会成功 但不会报错 

 

相关函数 

append(x) 在最后插入 x 

 

appendleft(x) 在最左端插入 x

 

clear() 移除所有元素

 

copy() 创建一份浅拷贝

 

count(x) 统计deque中等于x元素的个数 

 

extend(推导式/内容) 往deque最后追加内容 

 

extendleft(推导式/内容) 往deque左边增加内容 添加的内容会被反过来 

 

index(x,[start],[end]) 返回x第一次出现的位置 start和end是范围 可以不写 如果没有 引发ValueError

 

insert(c,x) 在c的位置 插入x 如果超出maxlength限制 引发IndexError

 

pop() 移除最后一个元素 返回值是该元素 如果是空deque 引发IndexError

 

popleft() 移除最左侧元素 返回值是该元素 如果是空deque 引发IndexError

 

remove(value) 移除第一个value 如果没有的话 引发ValueError

 

reverse() 将deque元素逆序排列 

 

rotate(n=1) 把deque向右循环一位 一下子有点难理解 等效于最后一个元素移到第一 其他元素向后移动一位 负数即向左循环移动一位 

 

 

属性

只读属性 maxlen 最大长度 没有就是None 

 

除了以上操作,deque 还支持迭代、封存、len(d)reversed(d)copy.copy(d)copy.deepcopy(d)、成员检测运算符 in 以及下标引用例如通过 d[0] 访问首个元素等。 索引访问在两端的复杂度均为 O(1) 但在中间则会低至 O(n)。 如需快速随机访问,请改用列表

 

标签:deque,IndexError,python,元素,队列,内容,移除,copy,实现
From: https://www.cnblogs.com/mltooo/p/17627294.html

相关文章

  • 单调队列模板
    好的,这是一个晴朗的夜晚。-苯荏水平不高甚至菜亖,博客仅仅写给自己避免自己忘记学了什么,也仅据我理解写出,不严谨,非常不严谨。单调队列。在原序列基础上,维护一个单调的序列。单调队列中的元素在原序列中的相对位置不变,且在单调队列中的元素是单调的。基本模板题:https://www.lu......
  • Java判断word文档的重复,达到word文档的整理、整合效果代码实现
    在Java中,你可以使用ApachePOI库来操作Word文档并实现判断文档的重复。以下是一种实现思路:导入ApachePOI库:首先,你需要在Java项目中导入ApachePOI库,以便能够使用它的功能。你可以在项目的构建文件(如Maven或Gradle)中添加相应的依赖项。读取Word文档内容:使用ApachePOI库的XWPFDocum......
  • 使用MediatR实现CQRS
    CQRS和中介者模式MediatR库主要是为了帮助开发者快速实现两种软件架构模式:CQRS和Mediator。这两种架构模式看上去似乎差不多,但还是有很多区别的。CQRSCQRS是CommandQueryResponsibilitySegregation的缩写,一般称作命令查询职责分离。从字面意思理解,就是将命令(写入)和查询(读取)......
  • #region在多种编程语言及IDE中进行代码折叠,包括python msvc++ c#等
    vs/rider中折叠C#代码在写C#的时候,在visualstudio中可以使用#region和#endregion来进行代码折叠,那么在pycharm中是否可以呢?//这里有很多的代码......#region//这里的数百行的伪代码,可以直接折叠起来,方便阅读及归类[MenuItem("KEngine/KSFrameworkOptionsandHelp")]priva......
  • python实战练习2
        cities_dict={'Beijing':'China','Paris':'France','Moscow':'Russia'}print('原始列表的key顺序:',cities_dict)print("不对键排序时输出的city顺序:")forcityincities_dict.keys():......
  • Python教程(8)——一文弄懂Python字符串操作(下)
    (Python字符串操作)字符串常用方法字符串在编程中是一种不可或缺的数据类型,它在文本和字符数据时提供了丰富而强大的功能。掌握了字符串的使用方法,你能够更加便捷地进行文本处理、数据操作、用户交互等任务,从而提高编程效率和质量。len():返回字符串的长度。str1="Hello,Wo......
  • Python教程(8)——一文弄懂Python字符串操作(下)
    @目录字符串常用方法字符串更多方法介绍字符串常用方法字符串在编程中是一种不可或缺的数据类型,它在文本和字符数据时提供了丰富而强大的功能。掌握了字符串的使用方法,你能够更加便捷地进行文本处理、数据操作、用户交互等任务,从而提高编程效率和质量。len():返回字符串的长度......
  • 2-02-Nacos配置管理-Nacos实现配置管理
    页面新增即可......
  • python实战练习1:矩阵和整数相乘
       1#方法一:这是最先想到的2s=[[1,2,3],[4,5,6],[7,8,9]]3n=int(input())45r=[]6foriins:7a=[]#这个很重要,每次要清空8forjini:9a.append(j*n)10r.append(a)1112print(r)13141516171......
  • Django实现文件上传、文件列表查看、修改、限流和日志记录8
    Django实现文件上传、文件列表查看、修改、限流和日志记录8本章节,总结一些部署项目遇到的报错,希望会有所帮助NameError:name'datetime'isnotdefined报错“logging.info('用户{}在{}登录成功'.format(username,datetime.now()))NameError:name'datetime'isnotd......