python collections deque_python collections 模块 之 deque

class collections.deque(iterable[,maxlen]):

返回 由可迭代对象初始化的 从左向右的 deque 对象。

maxlen: deque 的最大长度,一旦长度超出,会在 相反方向 删除等量的 items。

append(x): 从 deque 的右边添加

appendleft(x): 从 deque 的左边添加

clear(): 移除 deque 中的所有元素

copy(): 浅拷贝 deque

count(x): 计算 deque 中 x 的数量

extend(x): 从右边扩展 deque

extendleft(x): 从左边扩展 deque

index(x[,start[,stop]]): 返回 出现在deque 中的第一个 x 的位置,可设置索引的起始和结束

insert(x, i): 在 i 位置 插入 x

pop(): 从deque的右边删除

popleft():从deque的左边删除

remove(value): 移除 deque 中的 value

reverse(): 翻转deque

rotate(n=1): 翻转 deque n 步,右边至左边,如果n为负数,则,左边至右边

deque 的应用:

roundrobin:

def roundrobin(*iterables):

#"roundrobin('ABC', 'D', 'EF') --> A D E B F C"iterators=deque(map(iter, iterables)) # 生成迭代器whileiterators:try:whileTrue:yieldnext(iterators[0]) # 取出最左边的迭代器的第一个元素

iterators.rotate(-1) # 将迭代器置于最右exceptStopIteration:#Remove an exhausted iterator.

iterators.popleft() # 如果迭代器为空,则删除该迭代器

保存有限的历史记录:

from collections importdequedef search(lines, pattern, history=5):

previous_lines= deque(maxlen=history)for line inlines:if pattern inlines:yieldline, previous_lines

previous_lines.append(line)if __name__ == '__main__':

with open('somefile.txt') as f:for line, prevlines in search(f, 'python', 5):for pline inprevlines:

prtin(pline, end='')print(line, end='')print('-'*20)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值