deque python_3 . python Collections -- Deque Object

语法:

classcollections.deque([iterable[,maxlen]])

返回从左到右初始化的新deque对象(使用append())和来自iterable(可迭代的)的数据。 如果未指定iterable(迭代),则新的deque为空。

Deques是堆栈和队列的概括(名称发音为“deck”,是“双端队列”的缩写)。

Deques支持线程安全,高效的内存追加和从"双端队列"的弹出,并且在任一方向都具有大致相同的O(1) [注:时间复杂度]性能。

尽管列表对象支持类似的操作,但是它们针对快速固定长度操作进行了优化,并且会导致pop(0)和insert(0, v)操作的O(n)内存移动成本,这些操作改变底层数据表示的大小和位置。

如果未指定maxlen或为None,则deques可能会增长到任意长度。 否则,deque被限制为指定的最大长度。一旦有限长度的deque已满,当添加新项目时,相应数量的项目将从相反的一端被丢弃。 有界长度deques提供类似于Unix中尾部过滤器的功能。 它们也可用于跟踪仅涉及最近活动的事物和其他数据池。

Deque对象支持以下方法:

append(x)                          将x添加到双端队列的右侧。

appendleft(x)                将x添加到双端队列的左侧。

clear()                             删除deque中的所有元素,使其长度为0。

copy()                                创建一个deque的浅表副本。3.5版本中的新功能。

count(x)                           计算deque元素的数量等于x。3.2版本中的新功能

extend(iterable)                通过追加iterable参数中的元素来扩展双端队列的右侧。

extendleft(iterable)        通过追加iterable中的元素来扩展双端队列的左侧。请注意,一系列左边追加结果会颠倒迭代参数中元素的顺序。

index(x[,start[,stop]])       返回deque中的x的位置(在索引开始处或索引停止之前)。如果未找到,则返回第一个匹配或引发ValueError。

insert(i,x)                       将x插入位置i处的deque中。3.5版本中的新功能。如果插入会导致有界的deque超出maxlen,则会引发IndexError。

pop()                                 从deque的右侧移除并返回一个元素。 如果没有元素存在,则引发IndexError。

popleft()                        从deque的左侧移除并返回一个元素。 如果没有元素存在,则引发IndexError

remove(value)                 删除第一次出现的值。 如果找不到,则会引发ValueError。

reverse()                        反序排列deque的元素,然后返回None。New in version 3.2.

rotate(n=1)                    向右旋转deque n个步。 如果n为负数,则向左旋转。

解释:

当deque不为空时:

向右旋转一个等同于 d.appendleft(d.pop())

向左旋转一个等同于 d.append(d.popleft())

另,Deque对象还提供一个只读属性:

maxlen

最大的deque的大小,如果×××限,则为None.    [3.1版本引入]

除上述之外,deques支持迭代、pickling、len(d)、reverse(d)、copy.copy(d)、copy.deepcopy(d),使用 in 运算符进行成员资格测试,以及下标引用,例如:d[-1]。

索引访问在两端都是O(1),但在中间减慢到O(n)。

对于快速随机访问,请改用列表。

从版本3.5开始,deques开始支持__add__(), __mul__(), __imul__()。

下面是例子:

deque Recipes(食谱???黑人问号脸)

本节介绍处理deques的各种方法。

有界长度的deques提供了类似于Unix中尾部过滤器的功能:

#返回文件的最后n行

另一种使用deques的方法是通过向右追加并弹出到左边来维护一系列新添加的元素:

rotate()方法提供了一种实现双端切片和删除的方法。

例如,del d[n]的纯Python实现依赖于rotate()方法来定位要弹出的元素:

为了实现deque切片,使用类似的方法来应用rotate( )来将目标元素置于双端队列的左侧。

使用popleft( )删除旧条目,使用extend( )添加新条目,然后反转旋转。

通过该方法的细微变化,很容易实现Forth样式的堆栈操作,如dup,drop,swap,over,pick,rot和roll。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jzoj5237 最长公共子序列

给你序列A和B&#xff0c;求出他们LCS的方案数&#xff0c;|A|,|B|<5000 dp套dp经典题目&#xff0c;我们考虑先求出LCS&#xff0c;令f[i][j]表示处理到序列A的第i位&#xff0c;B序列的第j位时的LCS长度 那么转移很显然&#xff0c;现在考虑如何统计答案 我们设g[i][j]为当…

sqllyog可以连接oracle_03-SQLServer中链接服务器用法--连接Oracle

一、前言1、使用SQLServer连接Oracle的方式有2种(对应2个不同的数据源程序)(1)创建本地的数据源ODBC&#xff0c;是在Net Configuration Assistant里配置&#xff0c;对应的SQLServer里的程序是Microsoft OLE DB Provider for ODBC Drivers&#xff1b;(2)第二种创建方式是不通…

sql 除以_刷完这些SQL练习题,简单查询就熟能生巧了

练习题&#xff1a;SQLZOO表&#xff1a;&#xff08;图片未显示全部列&#xff09;&#xff08;1&#xff09;SELECT basics&#xff1a;&#xff08;简单查询&#xff09;SELECT basics/zh​sqlzoo.net①The example uses a WHERE clause to show the population of France. …

智能机器人建房子后房价走势_人工智能未来10年将颠覆房地产行业,你还敢买房吗?...

原标题&#xff1a;人工智能未来10年将颠覆房地产行业&#xff0c;你还敢买房吗&#xff1f;近日&#xff0c;随着人工智能的消息持续刷屏&#xff0c;很多网友都对此产生了非常浓厚的兴趣。不止是因为大家对新兴产业的新鲜感和神秘感&#xff0c;随之而来的是网友们的相关疑问…

python博客源码下载_Python生成并下载文件后端代码实例

txt文件生成并下载txt文件&#xff1a;app.route(/download, methods[GET])def download():content "long text"response make_response(content)response.headers["Content-Disposition"] "attachment;filenamemyfilename.txt"return respon…

Tomcat 总体结构

http://threezj.com/2016/06/25/Tomcat%20%E6%9E%B6%E6%9E%84%E6%8E%A2%E7%B4%A2/ Tomcat 架构探索 發表於 2016-06-25 | 前言 花了一个礼拜的时间阅读了 how tomcat works&#xff0c;本文基于此书&#xff0c;整理了一下Tomcat 5的基本架构&#xff0c;其实也没什么多复杂…

flutter 生成文档_Flutter文件操作

path_provider获取应用存储路径path_provider是flutter提供的一个获取应用存储路径的插件&#xff0c;它封装了统一的api来获取Android和ios两个平台的应用存储路径&#xff0c;提供的api如下&#xff1a;getTemporaryDirectory()&#xff1a;获取应用临时文件夹&#xff0c;该…

java难学还是pythonnanxue_关于python:为什么numpy中的“ NaN”比“ -np.inf”更小?

在涉及np.min或np.argmin的任何比较中&#xff0c;认为NaN小于-np.inf的原因是什么&#xff1f;import numpy as npIn [73]: m np.array([np.nan, 1., 0., -np.inf])In [74]: n np.array([-np.inf, 1., 0., np.nan])# Huh??In [75]: np.min(m)Out[75]: nanIn [76]: np.min(…

Centos7 Yum安装 PHP5.5,5.6,7.0

默认的版本太低了&#xff0c;手动安装有一些麻烦&#xff0c;想采用Yum安装的可以使用下面的方案&#xff1a; 1.检查当前安装的PHP包yum list installed | grep php如果有安装的PHP包&#xff0c;先删除他们yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x…

fanuc机器人控制柜接线_fanuc机器人控制柜crma-15.16接线图(2)

资源描述&#xff1a;B-82725EN-2/05 CONNECTIONS - 149 - 4. PERIPHERAL DEVICE AND END EFFECTOR INTERFACES 4.3 INTERFACE FOR PERIPHERAL DEVICES 4.3.1 Connection between the Main board (CRMA15, CRMA16) and Peripheral Devices Peripheral device control interface…

sql 存储过程 盲注入_一次非常规 SQL 注入(informixsql)的利用过程

介绍一个客户正在寻找升级他们的思科 UCM 软件&#xff0c;并希望保证他们的实现是安全配置的。在评估期间&#xff0c;我们在 Cisco UCM 管理员门户中发现了一个经过身份验证的 SQL 注入问题。在大多数情况下&#xff0c;可以使用 SQLMap 或其他工具来自动发现问题。由于我们是…

自定义鼠标指针轨迹_win10鼠标自定义颜色,鼠标属性设置,这样就不眯眼了

电脑用多了&#xff0c;眼睛受不了&#xff0c;这时候就需要各种护眼模式&#xff0c;把画面放大&#xff0c;指针放大&#xff0c;来解决眼睛盯着电脑累的问题了&#xff0c;一不留神发现鼠标指针变大好处多多&#xff0c;下面设置一下win10系统鼠标指针大小、颜色都是默认设置…

mysql linux_linux下mysql下载安装

1、下载地址https://www.mysql.com/downloads/选择community server点击DOWLOAD选择版本&#xff0c;当前选择的5.6版本点击下载mysql-5.6.38-linux-glibc2.12-i686.tar.gz选择no thanks2、安装mysqltar -xvzf mysql-5.6.38-linux-glibc2.12-i686.tar.gzmv mysql-5.6.38-linux…

老男孩python课后作业_老男孩python基础知识练习题(一)中

20、字符串是否可迭代&#xff1f;如可以请使用for循环每一个元素&#xff1f;>>> name " aleX ">>> for i in name:... print(i)21、请代码实现&#xff1a;利用下划线将列表的每一个元素拼接成字符串&#xff0c;li [‘alex‘,‘eric‘,‘rain…

java代码生成器 快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码...

A代码编辑器&#xff0c;在线模版编辑&#xff0c;仿开发工具编辑器&#xff0c;pdf在线预览&#xff0c;文件转换编码B 集成代码生成器 [正反双向](单表、主表、明细表、树形表&#xff0c;快速开发利器)快速表单构建器 freemaker模版技术 &#xff0c;0个代码不用写&#xff…

php mysql搭建_PHP+MYSQL的搭建_MySQL

现在准备研究下微信的开发&#xff0c;所以要研究下PHP了&#xff0c;但对这个平台还是很陌生的&#xff0c;所以网上找了些资料并测试&#xff0c;现贴出来给大家参考。第一步&#xff1a;我们先下载【PHPStudy 2013】或者最新版本&#xff1b;下载地址&#xff1a; http://do…

python 精度损失_Python的浮点数损失精度问题

本篇讨论的现象可以从下面这段脚本体现出来&#xff1a;>>> x 0.0>>> for i in range(10):x 0.1print(x)0.10.20.300000000000000040.40.50.60.70.79999999999999990.89999999999999990.9999999999999999>>>即&#xff1a;为什么有几行的输出看起…

锐捷交换机实验案例:vlan间互访的配置与验证

组网需求&#xff1a; 1、如下图所示&#xff0c;某用户内网被划分为VLAN 10、VLAN 20、VLAN 30&#xff0c;以实现相互间的2 层隔离&#xff1b; 2、3 个VLAN 对应的IP 子网分别为192.168.10.0/24 、192.168.20.0/24 、192.168.30.0/24&#xff0c;3 个VLAN 通过3 层核心交换机…

mysql innodb隔离级别_浅析MySQL InnoDB的隔离级别

本文就将对上面这两个问题进行解答&#xff0c;分析事务的隔离级别以及相关锁机制。隔离性简介隔离性主要是指数据库系统提供一定的隔离机制&#xff0c;保证事务在不受外部并发操作影响的"独立"环境执行&#xff0c;意思就是多个事务并发执行时&#xff0c;一个事务…

sql 2008服务器内存一直居高不下_经验之谈:内存问题造成数据库性能异常怎么破?...

作者&#xff1a;罗贵林原文链接&#xff1a;https://mp.weixin.qq.com/s/2e5eKSoGlU9J4Rjq1zwLnw导读&#xff1a;在使用数据库的过程中&#xff0c;内存不足常常会引起数据库异常。但是内存不足&#xff0c;又会为数据库带来哪些具体的影响呢&#xff1f;本次&#xff0c;我们…