生成器:

简单的生成器实现:

 #生成器,将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. [ SSH框架 ] Struts2框架学习之一

    一.Struts2框架的概述 Struts2是一种基于MVC模式的轻量级Web框架,它自问世以来,就受到了广大Web开发者的关注,并广泛应用于各种企业系统的开发中.目前掌握 Struts2框架几乎成为 ...

  2. redis 设置

    设置成服务命令,redis目录下,执行cmd命令 redis-server --service-install redis.windows-service.conf --loglevel verbos ...

  3. php中$_FILES应用实例

    允许用户从表单上传文件是非常有用的.先来看一段HTML表单代码 <html> <body> <form action="upload_file.php" ...

  4. 重温《STL源码剖析》笔记 第六、七、八章 next_permutation (字典序)

    源码之前,了无秘密  ——侯杰 第六章算法 next_permutation 比如:01342 -> 01423 -> 01432 方法:从尾端开始往前寻找两个相邻的元素,令第一个元素为* ...

  5. java(一、概念和开发工具)

    Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式 ...

  6. __BEGIN_DECLS 和 __END_DECLS

    扩充C语言在编译的时候按照C++编译器进行统一处理,使得C++代码能够调用C编译生成的中间代码. 由于C语言的头文件可能被不同类型的编译器读取,因此写C语言的头文件必须慎重. 我们编写代码,经常需要c ...

  7. Collection、List、Set集合概括

    1.Collection是一个接口,定义了集合相关的操作方法,其有两个子接口List和Set. 2.List和Set的区别    List是有序的可重复集合,Set是无序的不可重复集合. 3.集合持有 ...

  8. Oracle数据库查询优化方案(处理上百万级记录如何提高处理查询速度)

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引.2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引 ...

  9. springboot+mybatis+ehcache实现缓存数据

    一.springboot缓存简介 在 Spring Boot中,通过@EnableCaching注解自动化配置合适的缓存管理器(CacheManager),Spring Boot根据下面的顺序去侦测缓 ...

  10. Java NIO Scatter / Gather

    原文链接:http://tutorials.jenkov.com/java-nio/scatter-gather.html Java NIO发布时内置了对scatter / gather的支持.sca ...