方法名作用append(x)添加 x 到右端appendleft(x)添加 x 到左端clear()移除所有元素,使其长度为0copy()创建一份浅拷贝count(x)计算 deque 中元素等于 x 的个数extend(iterable)扩展deque的右侧,通过添加iterable参数中的元素extendleft(iterable)扩展deque的左侧,通过添加iterable参数中的元素 。注意,左添加时 , 在结果中iterable参数中的顺序将被反过来添加index(x[, start[, stop]])返回 x 在 deque 中的位置(在索引 start 之后,索引 stop 之前) 。返回第一个匹配项 , 如果未找到则引发 ValueErrorinsert(i, x)在位置 i 插入 x,如果插入会导致一个限长 deque 超出长度 maxlen 的话,就引发一个 IndexError 。pop()移去并且返回一个元素 , deque 最右侧的那一个 。如果没有元素的话,就引发一个 IndexErrorpopleft()移去并且返回一个元素,deque 最左侧的那一个 。如果没有元素的话,就引发 IndexErrorremove(value)移除找到的第一个 value 。如果没有的话就引发 ValueErrorreverse()将deque逆序排列 。返回 None。rotate(n=1)向右循环移动 n 步 。如果 n 是负数,就向左循环 。如果deque不是空的 , 向右循环移动一步就等价于 d.appendleft(d.pop())
, 向左循环一步就等价于 d.append(d.popleft())
。maxlenDeque的最大尺寸,如果没有限定的话就是 Nonedeque 用法① linux下查看最新日志的命令是:tail -n 2 test.log
,deque也可以实现同样的功能
def tail(filename, n=10):with open(filename) as f:return deque(f, n)
② 维护一个近期添加元素的序列,通过从右边添加和从左边弹出
def moving_average(iterable, n=3):# moving_average([40, 30, 50, 46, 39, 44]) --> 40.0 42.0 45.0 43.0# http://en.wikipedia.org/wiki/Moving_averageit = iter(iterable)d = deque(itertools.islice(it, n-1))d.appendleft(0)s = sum(d)for elem in it:s += elem - d.popleft()d.append(elem)yield s / n
推荐阅读
- 信号量 C# 多线程访问之 SemaphoreSlim【C# 进阶】
- 炉石传说新手攻略萌新到底怎么玩(炉石传说新手进阶流程)
- 38 全球名校AI课程库| 马萨诸塞大学 · 自然语言处理进阶课程『Advanced Natural Language Processing』
- Python基础指面向对象:2、动静态方法
- Python基础之面向对象:3、继承与派生
- ysoserial CommonsCollections2 分析
- 如何免安装使用 Python?推荐 17 个在线的 Python 解释器!
- Python处理刚刚,分钟,小时,天前等时间
- python渗透测试入门——取代netcat
- 六 Selenium4+Python3系列 - Selenium的三种等待,强制等待、隐式等待、显式等待