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)
    

      

  • 相关阅读:
    75. Sort Colors
    101. Symmetric Tree
    121. Best Time to Buy and Sell Stock
    136. Single Number
    104. Maximum Depth of Binary Tree
    70. Climbing Stairs
    64. Minimum Path Sum
    62. Unique Paths
    css知识点3
    css知识点2
  • 原文地址:https://www.cnblogs.com/yanghh/p/13186256.html
Copyright © 2011-2022 走看看