zoukankan      html  css  js  c++  java
  • 队列-deque

    Python的 deque 模块是双向队列,属于 collections 库,提供了类似list的容器,可以快速的增加和删除元素。

    我们先来看下它有哪些API:

     

    deque.append(x)             # 在双向队列的右端增加一个元素x
    deque.appendleft(x)         # 在双向队列左端增加一个元素x
    deque.clear()               # 清除双向列表所有的元素
    deque.count(x)              # 计算在双向列表内部元素为x的个数
    deque.extend(iterable)      #  在双向队列的右端增加一个元素,该元素来自传入的列表参数.
    deque.extendleft(iterable)  #  在双向队列的左端增加一个元素,该元素来自传入的列表参数
    deque.pop()                 # 从右端pop一个元素
    deque.popleft()             # 从左端pop一个元素
    deque.remove(value)         # 在双向队列里删除首个和value(左端开始)匹配的元素,如果没有找到,抛出异常。
    deque.reverse()             # 把双向队列里的所有元素的位置反转,相当于对折。
    deque.rotate(n)             # 双向队列的移位操作,如果n是正数,则队列所有元素向右移动n位.如果是负数,则队列所有元素向左移动n位. 可用于做旋转。
    deque.insert(pos, val)      # 在指定位置插入元素
    deque.index(x)              # 返回元素x的索引位置
    

    下面来看一个deque的典型应用:保留最后N个元素 

    from collections import deque
    
    def search(lines, pattern, history=5):       # 保留满足条件的前5行
        previous_lines = deque(maxlen=history)   # 构造对象时可以指定容器大小
        for line in lines:
            if pattern in line:                  
                yield line, previous_lines       # 满足条件的元素生成
            previous_lines.append(line)
    
    # Example use on a file
    with open(r'somefile.txt') as f:
        for line, prevlines in search(f, 'python', 5):
            for pline in prevlines:
                print(pline, end='')             # 输出前五行 
            print(line, end='')
            print('-' * 20)
    

      

  • 相关阅读:
    恶意代码分析实战-确认EXE什么时候编译的
    恶意代码分析-工具收集
    Bug Bounty Reference
    [ Mongodb ] 问题总汇
    [ kvm ] 四种简单的网络模型
    [ kvm ] 进程的处理器亲和性和vCPU的绑定
    虚拟化概念总结
    centos7安装tengine强制使用HTTPS访问
    [ SSH 两种验证方式原理 ]
    [ Centos 7 iscsi搭建 及 1台客户端同时挂载多台iscsi服务端问题 ]
  • 原文地址:https://www.cnblogs.com/yanghh/p/13186256.html
Copyright © 2011-2022 走看看