欢迎访问宙启技术站
智能推送

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的队列,可以方便地实现队列的入队和出队操作,并且还支持判断队列是否为空以及获取队列的大小。