概念:
队列与后进先出(LIFO, Last In First Out)的栈不同,队列是先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作!
队列比较符合我们通常生活中的习惯,排在第一个的优先出列,最后来的当然排在队伍最后。
应用场景:
在web开发中,我们经常会遇到处理批量任务的情况,如:群发邮件、短信验证码等等,我们需要做的是,当用户点击群发邮件、获取短信验证码的时候,浏览器提示“提交成功、正在发送”之类的信息给用户,此时用户可以关闭浏览器,不需要一直等在当前页面,而批量任务就交给队列来处理,让用户的体验更好。
python使用列表实现队列:
class Queue(object):
def __init__(self):
"""队列初始化"""
self.que = []
def enqueue(self,item):
"""往队列尾部添加一个item元素"""
self.que.append(item)
def dequeue(self):
"""从队列头部删除一个元素"""
return self.que.pop(0)
def is_empty(self):
"""判断一个队列是否为空"""
return self.que == []
def size(self):
"""返回队列的大小"""
return len(self.que)
if __name__ == '__main__':
que = Queue()
# 先后向队列中添加元素:1、2、3
que.enqueue(1)
que.enqueue(2)
que.enqueue(3)
print('入队完成后队列长度为:{}'.format(que.size()))
# 依次出队
print(que.dequeue())
print(que.dequeue())
print(que.dequeue())
print('出队完成后队列长度为:{}'.format(que.size()))