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 Queueq=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 TrueElement 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 dequequeue=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