26 python进阶collections标准库( 四 )


方法名作用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

推荐阅读