📜  Python中的队列(1)

📅  最后修改于: 2023-12-03 15:19:31.503000             🧑  作者: Mango

Python中的队列

简介

在计算机科学中,队列(Queue)是一种常见的数据结构,可用于执行先进先出(FIFO)的操作。Python标准库中提供了多个队列类,例如Queue、PriorityQueue、LifoQueue等,可以轻松地操作队列数据。

Queue类

Queue是Python中最基本的队列类。它提供了put()方法将元素放入队列中,get()方法从队列中取出元素并删除它。此外,Queue还提供了一些其他的方法:

  • qsize(): 返回队列的大小。
  • empty(): 如果队列为空,返回True,否则返回False。
  • full(): 如果队列已满,返回True,否则返回False。

下面是一个使用Queue的例子:

from queue import Queue

q = Queue()

q.put(1)
q.put(2)
q.put(3)

while not q.empty():
    print(q.get())

运行结果:

1
2
3
PriorityQueue类

PriorityQueue是带有优先级的队列类。元素按优先级顺序排列。添加到PriorityQueue中的元素必须是可比较的,否则会抛出TypeError异常。

PriorityQueue具有Queue类中提供的所有方法,并添加了以下方法:

  • put(item, priority): 将item(元素)放入队列中,并根据priority(优先级)从小到大排序。
  • get(): 从队列中取出优先级最高的元素,并删除它。

下面是一个使用PriorityQueue的例子:

from queue import PriorityQueue

q = PriorityQueue()

q.put((1, "Hello"))
q.put((0, "World"))
q.put((2, "Python"))

while not q.empty():
    print(q.get()[1])

运行结果:

World
Hello
Python
LifoQueue类

LifoQueue是Python中的一个后进先出(LIFO)队列类。与Queue类不同,LifoQueue允许您将元素添加到队列的一端,并从同一端取出它们。

LifoQueue具有Queue类中提供的所有方法,并添加了以下方法:

  • put_nowait(item): 将元素item插入到队列的一端。
  • get_nowait(): 从队列的一端取出元素。

下面是一个使用LifoQueue的例子:

from queue import LifoQueue

q = LifoQueue()

q.put(1)
q.put(2)
q.put(3)

while not q.empty():
    print(q.get())

运行结果:

3
2
1
总结

Python中提供了丰富的队列类,以满足不同的需求。Queue、PriorityQueue和LifoQueue类分别提供了不同的队列数据操作方式。使用这些队列类,我们可以轻松地操作队列数据,使代码更加简洁、优雅。