• Python3-笔记-B-006-数据结构-双向队列deque


    from collections import deque
    # 双向队列[有序序列] (封装list)
    def deques():
    # 双向队列,线程安全,队列两端添加和弹出复杂度为O(1),效率很高
    # 创建
    lists = ["A", "B", "C", "D", "E"] # <class 'list'>: ['A', 'B', 'C', 'D', 'E']
    queue = deque(lists) # deque(['A', 'B', 'C', 'D', 'E'])
    queue = deque(lists, 3) # 3为限制容器大小,队列满之后,先添加的元素将挤出另一端的旧元素;
    # 未指定容器大小将是任意长度, deque(['C', 'D', 'E'], maxlen=3)
    queue = deque(range(10)) # deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

    # 添加
    queue.append("F") # 添加到右边, deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'F'])
    queue.appendleft("G") # 添加到左边, deque(['G', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'F'])
    queue.extend(range(3)) # 右边添加iterable元素, deque(['G', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'F', 0, 1, 2])
    queue.extendleft(range(3)) # 追加到左边,注意变成了210deque([2, 1, 0, 'G', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'F', 0, 1, 2])
    queue.insert(1, "L") # 在指定的index插入元素,deque([2, 'L', 1, 0, 'G', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'F', 0, 1, 2])
    queue = queue + deque(range(3)) # 合并, deque([2, 'L', 1, 0, 'G', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'F', 0, 1, 2, 0, 1, 2])
    queue = queue * 3 # n

    # 获取
    queue = deque(lists) # deque(['A', 'B', 'C', 'D', 'E'])
    queue2 = queue.copy() # 浅拷贝
    index = queue.index("C") # 获取索引,未找到抛ValueError异常, 2
    index = queue.index("C", 1) # 可以指定start
    index = queue.index("C", 2, 4) # 可以指定end
    elem = max(queue) # e
    elem = min(queue) #

    # 统计
    count = queue.count("A") # 1

    # 删除
    elem = queue.pop() # 弹出右边元素, deque(['A', 'B', 'C', 'D'])
    elem = queue.popleft() # 弹出左边元素, deque(['B', 'C', 'D'])
    queue.remove("C") # deque(['B', 'D'])
    queue.clear() # 清空


    # 指针
    queue = deque(lists) # deque(['A', 'B', 'C', 'D', 'E'])
    queue.rotate(-1) # 旋转指针 +元素后移 -元素前移, deque(['B', 'C', 'D', 'E', 'A'])

    # 其他
    queue.reverse() # 反转元素, deque(['A', 'E', 'D', 'C', 'B'])
  • 相关阅读:
    忽略大小写的RegularExpressionValidator
    Outlook 2010 “加载项执行错误。调用“Microsoft Exchange 加载项”加载项时,在“IDTExtensibility2”接口回调“OnConnection”期间,Outlook 出现故障”问题
    选择排序——算法系列
    代码杂记32
    数据库系统原理
    C#中的委托与事件
    C#多线程
    冒泡排序——算法系列
    快速排序——算法系列
    递归算法——猴子吃桃
  • 原文地址:https://www.cnblogs.com/vito13/p/7729986.html
Copyright © 2020-2023  润新知