python基础:deque的用法

deque(maxlen=N) 创建了一个固定长度的队列,当有新的记录加入而队列已满时会自动移动除最老的那条记录。

1 from collections import deque
2 d=deque(maxlen=3)
3 d.append(1)
4 d.append(2)
5 d.append(3)
6 print(d)
7 print(type(d))
8 d.append(4)
9 print(d)

输出如下:

deque([1, 2, 3], maxlen=3)
<class ‘collections.deque‘>
deque([2, 3, 4], maxlen=3)

虽然通过列表操作(append、del)也能够完成deque的功能,但是队列的这种解决方案要更优雅的多,运行速度也将更快。如果deque不指定队列长度,将得到一个无界限的队列,可以在两端执行添加和弹出操作,例如:

 1 from collections import deque
 2 d=deque()
 3 d.append(1)
 4 d.append(2)
 5 d.append(3)
 6 print(d)
 7 d.appendleft(4)
 8 print(d)
 9 d.pop()
10 print(d)
11 d.popleft()
12 print(d)

输出如下:

deque([1, 2, 3])
deque([4, 1, 2, 3])
deque([4, 1, 2])
deque([1, 2])

从队列两端添加或者弹出元素的复杂度都是O(1)。这和列表不同,当从列表的头部插入或者移除元素时,列表的复杂度为O(N)

时间: 2024-10-09 22:48:41

python基础:deque的用法的相关文章

Python基础(集合用法、文件操作、字符编码转换、函数)

集合(Set)及其函数 集合是一个无序的.无重复元素的序列. 1 list = {1, 3, 6, 5, 7, 9, 11, 3, 7} # 定义集合方式一 2 list1 = set([1, 3, 6, 5, 7, 9, 11, 3, 7]) # 定义集合方式二 3 list2 = set() # 定义一个空集合 4 5 print(list1, list) # 打印后可看到,集合中的元素已自动去重 6 print(3 in list) # 判断一个元素是否在集合中,返回bool值 7 pri

【Python基础到进阶】Python的一些特殊用法总结

Python的一些特殊用法总结 格式化打印输出 values=input(">>>") l=values.split(",") t=tuple(l) print(f"List of values : {l}") print(f"Tuple of values : {t}") x = {'name':"xiong","age":26} print(f"{x}&q

Python 基础知识点总结

本篇基于Python 2.7.9 根据廖雪峰Python教程整理 URL:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000 安装及IDE 上Python官网下载安装包. 配置环境变量:C:\Python27. cmd中输入 python 出现信息则为安装正确. IDE推荐集成在Eclipse上的pydev,eclipse插件安装路径:http://pydev.org/updates

Python基础教程(第九章 魔法方法、属性和迭代器)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5437223.html______ Created on Marlowes 在Python中,有的名称会在前面和后面都加上两个下划线,这种写法很特别.前面几章中已经出现过一些这样的名称(如__future__),这种拼写表示名字有特殊含义,所以绝不要在自己的程序中使用这样的名字.在Python中,由这些名字组成的集合所包含的方法称

Python基础入门 (一)

一.关于版本的选择 Should i use Python 2 or Python 3 for my development activity?转载自Python官网 Short version: Python 2.x is legacy, Python 3.x is the present and future of the language Python 3.0 was released in 2008. The final 2.x version 2.7 release came out

Python基础(二)

Python基础(二) Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典.set集合) for 循环 enumrate range和xrange 编码与进制转换 Python 运算符 1.算术运算: 2.比较运算: 3.赋值运算: 4.逻辑运算:  5.成员运算: 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483

Python之路【第二篇】:Python基础(一)

Python之路[第二篇]:Python基础(一) 入门知识拾遗 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name = 'wupeiqi' print  name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 1 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为假:result = 值2 三.进制 二进制,01 八进

Python基础教程【读书笔记】 - 2016/7/31

希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第十波:第10章  充电时刻 Python语言的核心非常强大,同时还提供了更多值得一试的工具.Python的标准安装包括一组模块,称为标准库standard library.展示这些模块的工作方式,讨论如何分析它们,学习它们所提供的功能. [10.1] 模块 已经知道如何创建和执行自己的程序,也学会了怎么用import从外部模块获取函数并且为自己的程序使用.接下来看看怎么编写自己的模块. [10.1.1] 模块是程序

Python基础教程(第十章 自带电池)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5459376.html______ Created on Marlowes 现在已经介绍了Python语言的大部分基础知识.Python语言的核心非常强大,同时还提供了更多值得一试的工具.Python的标准安装中还包括一组模块,称为标准库(standard library).之前已经介绍了一些模块(例如math和cmath,其中包

Python总结:Python基础(一)

Python之路[第二篇]:Python基础(一) 入门知识拾遗 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name = 'wupeiqi' print  name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 1 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为假:result = 值2 三.进制 二进制,01 八进