生成器:

简单的生成器实现:

 #生成器,将for循环的变量传递到前面的式子进行处理
#生成的并不是一个列表,而是一个存在算数规则的对象
#不能通过下标直接取值,必须一个一个从头到尾取
va=(i*2 for i in range(10))
print(va) #调用下一个,只记住当前位置,相当于有一个游标,只能向下
print(va.__next__()) #输出:0
print(va.__next__()) #输出:2 #变量生成器
for i in va:
print(i) #输出:#4 6 8 10 12 14 16 18

生成器进阶:

 def funx1(max):
m,x,y=0,0,1
while m<max:
#print(y) #1 1 2 3 5 8 13 21 34 55
yield y #生成器输出,使用for循环或者next方法才会输出
x,y=y,(x+y)
m+=1 #普通调用
#funx1(10) #生成器调用
funx=funx1(10)
print(funx.__next__())
print("----- 可输出 ------")
print("取值方法1:",funx.__next__())
print("取值方法2:",next(funx))

生成器发送数据:

 def funx1():
while True: #如果不写则启动就结束了,不能继续发数据
res=yield
print("获取的结果:",res) #生成器调用
funx=funx1()
funx.send(None) #必须先启动生成器,无输出,也可以使用funx.__next__()
funx.send("------") #发送数据,输出:获取的结果: ------
funx.send("******") #输出:获取的结果: ******

迭代器:

表示一个数据流,可以无限大

可使用for循环的对象都是可迭代对象,如字符串、列表、字典等,可使用next(对象)的对象都是迭代器对象

可迭代对象可以通过iter方法变成迭代器对象

 strx="abcdefghigk"

 #转换为迭代器
va=iter(strx) print(next(va)) #输出:a
print(next(va)) #输出:b

队列:

可自定义先入先出还是后人先出,数据一经取出就在队列里自动去除

 import queue

 #先进先出
#qlistx=queue.Queue(maxsize=5) #生成实例,参数maxsize表示最大数量,超过则阻塞,等待头取出
#qlistx=queue.Queue() #生成实例 #后进先出
qlistx=queue.LifoQueue() #生成实例 #设置数据方法一
#队列满则阻塞等待
qlistx.put("")
qlistx.put("") #设置数据方法二
#超时则报异常
qlistx.put("",timeout=1) print(qlistx.qsize()) #输出列表大小 #取数据方法一
#如果取到最后没有数据,将会一直处于阻塞
print(qlistx.get())
print(qlistx.get()) #取值方法二
#设置超时时间,超时则报异常
print(qlistx.get(timeout=1)) #取数据方法三
#无数据不进行阻塞,如果无数据则报异常
#print(qlistx.get_nowait())

优先级存取值:

值越小则优先级越高,实现高优先级最先取出

import queue

qlistx=queue.PriorityQueue() #生成实例

qlistx.put((1,""))
qlistx.put((-1,""))
qlistx.put((100,"")) print(qlistx.get()) #输出:(-1, '2222222')
print(qlistx.get()) #输出:(1, '1111111')

Python档案袋(生成器、迭代器、队列 )的更多相关文章

  1. python初识生成器 迭代器

    生成器 带有 yield 的函数在 Python 中被称之为 generator(生成器) def xragns(): #定义函数生成器 print('小伙') yield ('好') #加上yiel ...

  2. python 容器 生成器 迭代器 总结

    一.容器 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中.通常这类数据结构把所有的元素存储在内存中. >> ...

  3. Python中生成器,迭代器,以及一些常用的内置函数.

    知识点总结 生成器 生成器的本质就是迭代器. 迭代器:Python中提供的已经写好的工具或者通过数据转化得来的. 生成器:需要我们自己用Python代码构建的 创建生成器的三种方法: 通过生成器函数 ...

  4. python基础 生成器 迭代器

    列表生成式: a=[1,2,3] print a b=[i*2 for i in range(10)] #i循环10次,每一个i的值乘2就是列表中的值.列表生成式 print b >>[1 ...

  5. 第四天python3 python解析式-生成器-迭代器

    标准库datetime datetime模块  对日期.时间.时间戳的处理 datetime类 类方法: today() 返回本地时区当前时间的datetime对象: now(tz=None) 返回当 ...

  6. python高级之生成器&迭代器

    python高级之生成器&迭代器 本机内容 概念梳理 容器 可迭代对象 迭代器 for循环内部实现 生成器 1.概念梳理 容器(container):多个元素组织在一起的数据结构 可迭代对象( ...

  7. 第三篇:python高级之生成器&迭代器

    python高级之生成器&迭代器   python高级之生成器&迭代器 本机内容 概念梳理 容器 可迭代对象 迭代器 for循环内部实现 生成器 1.概念梳理 容器(container ...

  8. Python自动化 【第四篇】:Python基础-装饰器 生成器 迭代器 Json & pickle

    目录: 装饰器 生成器 迭代器 Json & pickle 数据序列化 软件目录结构规范 1. Python装饰器 装饰器:本质是函数,(功能是装饰其它函数)就是为其他函数添加附加功能 原则: ...

  9. 第五章:Python基础の生成器、迭代器、序列化和虚拟环境的应用

    本课主题 生成器介紹和操作实战 迭代器介紹和操作实战 序例化和反序例化 Json 和 Pickle 操作实战 字符串格式化的应用 创建虚拟环境实战 本周作业 生成器介紹和操作实战 什么是生成器,生成器 ...

  10. Python基础之迭代器和生成器

    阅读目录 楔子 python中的for循环 可迭代协议 迭代器协议 为什么要有for循环 初识生成器 生成器函数 列表推导式和生成器表达式 本章小结 生成器相关的面试题 返回顶部 楔子 假如我现在有一 ...

随机推荐

  1. ajax 原生态和jquery封装区别

    一.原生态 var xmlHttp = false; try{ if( xmlHttp && xmlHttp.readyState != 0 ){ xmlHttp.abort(); } ...

  2. thinkphp实现文件上传

    文件上传详细讲解 http://www.thinkphp.cn/info/194.html 上传根目录不存在问题解决方法 http://www.thinkphp.cn/topic/10779.html

  3. 2017OKR年终回顾与2018OKR初步规划

    一.2017OKR - 年终回顾 自从6月份进行了年中总结,又是半年过去了,我的2017OKR又有了一些milestone.因此,按照国际惯例,又到了年终回顾的时候了,拉出来看看完成了多少.(以下目标 ...

  4. DX11 Without DirectX SDK--05 键盘和鼠标输入

    回到 DirectX11--使用Windows SDK来进行开发 提供键鼠输入可以说是一个游戏的必备要素.在这里,我们不使用DirectInput,因为Windws SDK本身就不提供该头文件.这里我 ...

  5. 读《图解HTTP》有感-(了解web及网络基础)

    写在前面 <图解HTTP>是由上野宣先生著,于均良先生译 闲暇之余!写写博文甚是高兴.如有不准确,望各位斧正.共同学习! 正文 HTTP协议是什么?能做什么? HTTP(超文本传输协议)实 ...

  6. JAVA中写时复制(Copy-On-Write)Map实现

    1,什么是写时复制(Copy-On-Write)容器? 写时复制是指:在并发访问的情景下,当需要修改JAVA中Containers的元素时,不直接修改该容器,而是先复制一份副本,在副本上进行修改.修改 ...

  7. 怎么确定Oracle客户端安装成功

    可通过能否登录sqlplus来判断是否安装成功. 操作系统:windows10 oracle版本:oracle 11g 步骤: 1.电脑win键+R键,输入cmd,进入命令提示符. 2.命令行中输入: ...

  8. linux中~/cut/argus/

    1.Linux shell 截取字符变量的前8位 实现方法有如下几种: expr substr "$a" 1 8 echo $a|awk '{print substr(,1,8)} ...

  9. 搭建微信小程序服务

    准备域名和证书 任务时间:20min ~ 40min 小程序后台服务需要通过 HTTPS 访问,在实验开始之前,我们要准备域名和 SSL 证书. 域名注册 如果您还没有域名,可以在腾讯云上选购,过程可 ...

  10. How to untar a TAR file using Apache Commons

    import org.apache.commons.compress.archivers.tar.TarArchiveEntry; import org.apache.commons.compress ...