Python中使用collections.deque实现FIFO队列的示例
发布时间:2024-01-14 09:52:59
Python中的collections.deque是一个双向队列,可以用来实现FIFO(先进先出)队列。
使用collections.deque来创建队列非常简单,只需要通过deque()函数创建一个空的队列对象即可。例如:
from collections import deque queue = deque()
你可以使用queue对象的append()方法,在队列的右侧添加元素。例如:
queue.append(1) queue.append(2) queue.append(3)
此时队列中的元素为[1, 2, 3]。
你可以使用queue对象的popleft()方法,从队列的左侧删除并返回一个元素。这正好符合FIFO的原则。例如:
print(queue.popleft()) # 输出:1 print(queue.popleft()) # 输出:2
此时队列中的元素为[3]。
你还可以使用queue对象的len()方法获取当前队列的大小,使用queue对象的clear()方法清空队列。
另外,collections.deque还支持一些其他的操作,如在队列的左侧添加元素(appendleft()方法)、从队列的右侧删除并返回一个元素(pop()方法)等。
下面是一个完整的使用collections.deque实现FIFO队列的例子:
from collections import deque
class Queue:
def __init__(self):
self.queue = deque()
def enqueue(self, item):
self.queue.append(item)
def dequeue(self):
if len(self.queue) == 0:
return None
return self.queue.popleft()
def size(self):
return len(self.queue)
def is_empty(self):
return len(self.queue) == 0
# 创建一个队列对象
q = Queue()
# 将元素入队列
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
# 从队列中出队列并输出
print(q.dequeue()) # 输出:1
print(q.dequeue()) # 输出:2
# 打印当前队列的大小
print(q.size()) # 输出:1
# 判断队列是否为空
print(q.is_empty()) # 输出:False
通过以上示例,你可以看到我们使用collections.deque实现了一个FIFO的队列,可以方便地实现队列的入队和出队操作,并且还支持判断队列是否为空以及获取队列的大小。
