(一)队列和栈的区别

1、队列:

队列是一种特殊的线性表。其两头都有限制,插入只能在表的一端进行(只进不出),而删除只能在表的另一端进行(只出不进),允许删除的一端称为队尾(rear),允许插入的一端称为队头 (Front)。

先进先出(First In First Out),FIFO

2、栈:

栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。

后进先出(Last In First Out),LIFO

3、其他:

队列是线程间最常用的交换数据的形式。
在python中,多个线程之间的数据是共享的,多个线程进行数据交换的时候,不能够保证数据的安全性和一致性,所以当多个线程需要进行数据交换的时候,队列就出现了,队列可以完美解决线程间的数据交换,保证线程间数据的安全性和一致性。

(二)队列和栈的方法小结

Queue.Queue(maxsize=0)       创建队列,FIFO, 如果maxsize小于1就表示队列长度无限。
Queue.LifoQueue(maxsize=0)    创建栈,LIFO, 如果maxsize小于1就表示队列长度无限。

Queue.qsize()    返回队列的大小 
Queue.empty()  如果队列为空,返回True,反之False 
Queue.full()       如果队列满了,返回True,反之False
Queue.get([block[, timeout]])          出队,读队列,timeout等待时间。非阻塞get_nowait(),相当于get(block=False)
Queue.put(item, [block[, timeout]]) 入队,写队列,timeout等待时间。非阻塞put_nowait(),相当于put("xxx",block=False)
Queue.queue.clear()    清空队列

参考:

https://www.cnblogs.com/wt11/p/5952500.html

(三)队列

# from multiprocessing import Queue
from queue import Queue # 创建一个长度为5的队列
q = Queue(5) # 判队空
print(q.empty())
# 入队:向队列中添加元素
q.put(1)
q.put("abc")
q.put([1, 2, 3])
q.put({"a": 123})
q.put((1, 2))
# 判队满
print(q.full())
# 量队
print(q.qsize()) # 出队:从队列中取出元素
print(q.get())
print(q.get())
print(q.get())
print(q.get())
print(q.get())
# 判断队空
print(q.empty())
# 量队
print(q.qsize())
# 非阻塞入队
q.put_nowait(6)
# 非阻塞出队
print(q.get_nowait())

  

(四)栈

from queue import LifoQueue

# 定义一个5长度的栈
s = LifoQueue(5)
# 进栈:向栈中添加元素
s.put(1)
s.put(2)
s.put(3)
s.put(4)
s.put(5)
# 判栈满
print(s.full())
# 量栈
print(s.qsize()) # 退栈:从栈中取出元素
print(s.get())
print(s.get())
print(s.get())
print(s.get())
print(s.get()) # 判栈空
print(s.empty())
# 量栈
print(s.qsize())

  

python的队列和栈的更多相关文章

  1. python优先队列,队列和栈

    打印列表的疑问 class Node: def __str__(self): return "haha" print([Node(),Node()]) print(Node()) ...

  2. python之单例模式、栈、队列和有序字典

    一.单例模式 import time import threading class Singleton(object): lock = threading.RLock() # 定义一把锁 __inst ...

  3. python数据结构-数组/列表/栈/队列及实现

    首先 我们要分清楚一些概念和他们之间的关系 数组(array)  表(list)  链表(linked list)  数组链表(array list)   队列(queue)  栈(stack) li ...

  4. 用两个栈实现队列与用两个队列实现栈(Python实现)

    用两个栈实现队列: class QueueWithTwoStacks(object): def __init__(self): self._stack1 = [] self._stack2 = [] ...

  5. 编程题目: 两个队列实现栈(Python)

    感觉两个队列实现栈 比 两个栈实现队列 麻烦 1.栈为空:当两个队列都为空的时候,栈为空 2.入栈操作:当队列2为空的时候,将元素入队到队列1:当队列1位空的时候,将元素入队到队列2: 如果队列1 和 ...

  6. 【LeetCode题解】225_用队列实现栈(Implement-Stack-using-Queues)

    目录 描述 解法一:双队列,入快出慢 思路 入栈(push) 出栈(pop) 查看栈顶元素(peek) 是否为空(empty) Java 实现 Python 实现 解法二:双队列,入慢出快 思路 入栈 ...

  7. LeetCode 225:用队列实现栈 Implement Stack using Queues

    题目: 使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 Implement th ...

  8. 面试之leetcode20堆栈-字符串括号匹配,队列实现栈

    1 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合.注意空字符串可被认 ...

  9. day-25-类的继承顺序-父类对子类的约束-多态-队列和栈

    一.类的继承顺序 只要继承object类就是新式类 不继承object类的都是经典类 在python3 中所有的类都继承object类,都是新式类 在python2 中不继承object的类都是经典类 ...

随机推荐

  1. Go指南练习_循环与函数

    源地址  https://tour.go-zh.org/flowcontrol/8 一.练习题描述 为了练习函数与循环,我们来实现一个平方根函数:用牛顿法实现平方根函数. 计算机通常使用循环来计算 x ...

  2. 【Oracle】ORA 01810 格式代码出现两次-转

    一.Oracle中使用to_date()时格式化日期需要注意格式码 如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') fr ...

  3. windows server 2008 R2 计划任务备份系统

    实验环境拓扑图: 实验效果: Windows Server Backup 可以设置备份计划,但只能按日进行备份,不能设置按周或月进行备份.所以,需要使用到 windows Server 2008 R2 ...

  4. php 页面间传递数据

    b.php <?php function getClientIP() { if (getenv("HTTP_CLIENT_IP")) $ip = getenv("H ...

  5. android 软键盘自动弹出和关闭

     一.布局中软键盘自动弹出 bargain_dialog_offer_edit.requestFocus(); bargain_dialog_offer_edit.setFocusable(true) ...

  6. 【代码审计】XYHCMS V3.5代码执行漏洞分析

      0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...

  7. day_10 py

    整理代码!!2018-7-24 20:53:49 直接复制了东西: 一些的demo 重点看蓝字部分! 就是一些简单的方法 基础的而已! 2018-4-22 15:50:26 继续py 还是py好玩感觉 ...

  8. Linux --Unbuntu php项目对应不同php版本

    直入主题 因服务器上项目使用php版本有不同要求,特此解决一下. 下载 服务器上已有php7.0版本,安装7.0的方法自行百度,apt-get管理工具可直接install安装 然后安装一下需要的版本. ...

  9. linux下安装cmake(安装opencv库)

    apt-get install cmake cmake --version(显示版本号) cmake-gui(打开gui界面) 如果打不该GUI界面时候就需要apt-get install cmake ...

  10. okvis代码解读11

    https://blog.csdn.net/datase/article/details/78586854 https://www.cnblogs.com/JingeTU/p/8540426.html ...