Python中的队列是什么?举例说明

队列是一种线性数据结构,适用于先进先出 mechanism(FIFO)。

首先进入队列的元素是第一个被处理的元素。

示例

队列数据结构可以借助公交车站的队列来理解。第一个到达公交车站的人是队列中的第一个,其他人到达公交车站时站在他身边。公交车到站时,最先到达公交车站的人将最先上车,其余人按到达公交车站的先后顺序上车。因此,遵循先进先出机制。

Python中Queue的实现

Python 中的队列可以使用其他线性数据结构或 Python 库中的内置模块以各种方式实现。

方法 1 - 使用列表实现

Python 中的队列可以使用列表来实现。它不是很有效,因为在列表的开头插入或删除元素需要O(n)时间,这与使用其他方式的实现相比很慢。

涉及的操作

append() − 此函数在队列末尾添加一个元素。

pop(0) - 此函数删除并返回队列中的第一个元素。

例子

queue=[]

queue.append(1)

queue.append(2)

queue.append(3)

print("Initial queue",queue)

print("Element popped from the queue")

print(queue.pop(0))

print(queue.pop(0))

print("Queue after popping some elements",queue)

输出

Initial queue [1, 2, 3]

Element popped from the queue

1

2

Queue after popping some elements [3]

一旦队列为空,您就无法删除更多元素。这样做会导致异常。

queue.pop(0)

IndexError: pop from empty list

方法 2 - 使用 queue.Queue 实现

这是使用python的内置模块实现队列的方法。我们需要从队列中导入队列。我们可以用一些特定的大小初始化队列。大小为零意味着无限队列。

涉及的操作

maxsize - 队列中允许的最大元素数

get()- 从队列中移除并返回第一个元素。如果队列为空,则等待队列至少有一个元素。

get_nowait()- 从queue.If队列中移除并返回第一个元素为空,引发异常。

put(item)- 在queue.If队列的末尾追加一个元素已满,等待空闲插槽可用。

put_nowait(item)- 在queue.If队列末尾追加一个元素已满,引发异常。

full() - 如果队列已满则返回真,否则返回假。

empty() - 如果队列为空,则返回 True,否则返回 false

qsize() - 返回队列中存在的元素数

例子

from queue import Queue

q=Queue(maxsize=3)

q.put(1)

q.put(2)

q.put(3)

print("Is queue full",q.full())

print("Element popped from the queue")

print(q.get())

print(q.get())

print("Number of elements in queue",q.qsize())

print("Is queue empty",q.empty())

输出

Is queue full True

Element popped from the queue

1

2

Number of elements in queue 1

Is queue empty False

方法 3 - 使用 collections.deque 实现

这是在 Python 中实现队列的另一种方法。我们需要从 collections 模块导入 deque。

涉及的操作

append() − 此函数在队列末尾添加一个元素。

popleft() − 此函数以 O(1) 时间复杂度移除并返回队列中的第一个元素。

例子

from collections import deque

queue=deque()

queue.append(1)

queue.append(2)

queue.append(3)

print("初始队列: ",queue)

print("Element popped from the queue")

print(queue.popleft())

print(queue.popleft())

print("弹出一些元素后的队列: ",queue)

输出

初始队列: deque([1, 2, 3])

Element popped from the queue

1

2

弹出一些元素后的队列: deque([3])

popleft()在空双端队列上使用函数会引发异常。

以上是 Python中的队列是什么?举例说明 的全部内容, 来源链接: utcz.com/z/352697.html

回到顶部