python 数据结构-队列

队列

队列定义

队列是一种先进先出的数据结构,Queue是python标准库中线程安全的队列FIFO实现

队列基本操作

创建一个队列

Queue.Queue实现一个队列的创建,参数maxsize控制队列的长度,当maxsize<1,则队列无限长

import Queue
myqueue = Queue.Queue(maxsize=10)

向队列中插入数据

数据将插入队列尾部

from queue import Queue
q = Queue(2) #允许队列中最多包含两个数据
q.put(3)
q.put(4) #向队列中插入3和4
q.put(5, timeout=2) #此时队列长度已满,插入5时,由于设置了timeout
				#2秒后会raise 一个 FULL的报错,否则会处于阻塞状态

取出队列中的数据

自队列头部取出数据

q.get() #取出队列头部的数据,即3

获取队列长度

q.qsize()

判断队列为空或满

q.empty() #若队列为空则返回True,否则返回False

join()与task_done()的区别

Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号
Queue.join() 实际上意味着等到队列为空,再执行别的操作

双向队列

创建双向队列

from collentions import deque
dq = deque(maxlen=10) #maxlen定义双向队列可容纳元素数量,一旦设定无法更改

双向队列的旋转操作

dq.rotate(-2) #当n<0时,队列最**左**边的n个元素会被移动到队列**右**边 ,e.g.[1,2,3,4,5]--->[3,4,5,1,2]
dq.rotate(2)  #当n>0时,队列最**右**边的n个元素会被移动到队列**左**边 ,e.g.[1,2,3,4,5]--->[5,4,1,2,3]

其他队列

Python提供的所有队列类型 :

FIFO 先进先出队列 queue.Queue(maxsize)
LIFO 后进先出队列 queue.LifoQueue(maxsize) (Queue的基础上进行的封装)
优先级队列 queue.PriorityQueue(maxsize) (Queue的基础上进行的封装)
双向队列 queue.deque

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值