赞
踩
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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。