python3 队列用法

梦馨娴 2周前 10浏览 0评论

队列是计算机科学中非常重要的数据结构之一,它是一种先进先出(FIFO)的数据结构。Python3提供了队列模块queue,可以方便地操作队列。

队列模块有两种主要的队列实现:先进先出队列(Queue)和优先级队列(PriorityQueue)。

使用队列模块时,需要先导入模块:

import queue

先进先出队列(Queue)是最普遍的队列实现。使用Queue实现队列时,需要创建Queue对象。例如,下面的代码片段创建一个新的队列:

q = queue.Queue()

然后可以使用以下方法来操作队列:

  • put(item, block=True, timeout=None): 将一个元素添加到队列中
  • get(block=True, timeout=None): 从队列中删除并返回最早添加的元素
  • empty(): 如果队列为空则返回True,否则返回False
  • qsize(): 返回队列中元素的个数

例如,下面的代码片段创建一个新的队列,将三个元素添加到队列中,然后从队列中删除并打印这些元素:

q = queue.Queue()
q.put(1)
q.put(2)
q.put(3)
while not q.empty():
    print(q.get())

优先级队列(PriorityQueue)是一个封装了一个堆的先进先出队列,堆中元素的顺序由其优先级(数字)决定。使用PriorityQueue实现队列时,需要创建PriorityQueue对象。例如,下面的代码片段创建一个新的优先级队列:

q = queue.PriorityQueue()

优先级队列的方法与先进先出队列相同,不过元素的添加和删除需要指定优先级。例如,下面的代码片段创建一个新的优先级队列,将三个元素添加到队列中,然后从队列中删除并打印这些元素:

q = queue.PriorityQueue()
q.put((1, "a"))
q.put((3, "c"))
q.put((2, "b"))
while not q.empty():
    print(q.get()[1])