本篇博客摘自下面的博客和自己的理解进行补充,如有侵权,请告知,删除这篇博客, 谢谢!。
参考博客:
python中的Queue(队列)详解
Python 采用列表实现栈(Stack)

Queue

.Queue分成以下三种:
.FIFO:

Queue.Queue(maxsize=0)

FIFO即First in First Out,先进先出。Queue提供了一个基本的FIFO容器,使用方法很简单,maxsize是个整数,指明了队列中能存放的数据个数的上限。一旦达到上限,插入会导致阻塞,直到队列中的数据被消费掉。如果maxsize小于或者等于0,队列大小没有限制。

.LIFO

Queue.LifoQueue(maxsize=0)

LIFO即Last in First Out,后进先出。与栈的类似,使用也很简单,maxsize用法同上

.priority

class Queue.PriorityQueue(maxsize=0)

priority即插入队列中自动排序,无序入队列,弹出时按照从大到小的顺序弹出,使用方法与上面的类似。

Queue的方法

Queue.Queue(maxsize=0) FIFO, 如果maxsize小于1就表示队列长度无限
Queue.LifoQueue(maxsize=0) LIFO, 如果maxsize小于1就表示队列长度无限
Queue.PriorityQueue(maxsize=0) Priority, 如果maxsize小于1就表示队列长度无限
Queue.qsize() 返回队列的大小
Queue.empty() 如果队列为空,返回True,反之False
Queue.full() 如果队列满了,返回True,反之False
Queue.get([block[, timeout]]) 读队列,timeout等待时间,此外在读出队首元素的同时,把队首元素弹出队列
Queue.put(item, [block[, timeout]]) 写队列,timeout等待时间 ,把item加入队尾

Queue.queue.clear() 清空队列

Queue.Queue(maxsize=0) 使用方法

import queue
q = queue.Queue()#创建对象
for i in range(10):
    q.put(i)#插入队尾
print(q.qsize())#队列长度
t = q.get()
print(t)#弹出的队首的数据
print(q.qsize())#现在对列长度为9
while not q.empty():#遍历队列
    print(q.get())
print(q.qsize())#现在队列的长度

Queue.LifoQueue(maxsize=0)使用的方法

Queue.LifoQueue(maxsize=0)的使用方法与上面没有什么区别,就不详细介绍了

Queue.PriorityQueue(maxsize=0)使用方法

Queue.PriorityQueue(maxsize=0)的使用方法其实跟上面的使用的一样,就是弹出的结果不一致。

import queue
import  random
q = queue.PriorityQueue()#创建对象
for i in range(10):
    q.put(random.randint(1, 10))# 1~10之间的随机数

print(q.qsize())#现在对列长度为9
while not q.empty():#遍历队列,结果从小到大
    print(q.get())
print(q.qsize())#现在队列的长度

结果:
Refused

Stack的使用

我在查找的时候发现没有stack模块,有两个解决方法。
1.使用Queue.LifoQueue(maxsize=0),他的原理我感觉其实和栈没有什么区别。

2.自己写一个栈
类实现 :

class Stack(object):
    # 初始化栈为空列表
    def __init__(self):
        self.items = []

    # 判断栈是否为空,返回布尔值
    def is_empty(self):
        return self.items == []

    # 返回栈顶元素
    def peek(self):
        return self.items[len(self.items) - 1]

    # 返回栈的大小
    def size(self):
        return len(self.items)

    # 压栈,入栈,进栈
    def push(self, item):
        self.items.append(item)

    # 出栈
    def pop(self):
        return self.items.pop()

在用的时候重新开一个python文件命名为stack,别的也可以。
使用方法:

import stack#你命名的问件名称
s = stack.Stack()#构建类
for i in range(10):
    s.push(i)#压入栈
    
while not s.is_empty():#判断栈是否为空
    print(s.peek())#栈顶元素
    s.pop()#弹出栈
posted on 2019-09-23 16:29  Refused  阅读(135)  评论(0编辑  收藏  举报