#Author by Andy
#_*_ coding:utf-8 _*_
import time
from collections import Iterable
#列表生成式 def func():
list=[]
for i in range(10000000):
list.append(i)
print(list)
#print(list)
#[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
generator=(i for i in range(10)) #print(type(generator))
def func1():
for i in generator:
print(i)
def timmer():
time_start=time.time()
func1()
time_stop=time.time()
print(time_stop-time_start)
#定义斐波那契数列
def fib(max):
n,a,b=0,0,1
while n < max:
print(b)
a,b=b,a+b
n=n+1
fib(10)
# 注意,赋值语句:
# a, b = b, a + b
# 相当于:
# t = (b, a + b) # t是一个tuple
# a = t[0]
# b = t[1]
def fib(max):
n,a,b=0,0,1
while n < max:
yield b
a,b=b,a+b
n=n+1
return 'done'
f=fib(10)
s='我是分割线'
print(f.__next__())
print(s.center(50,'-'))
print(f.__next__())
print(s.center(50,'-'))
#异常捕获
g=fib(10)
while True:
try:
x = next(g)
print(x)
except StopIteration as e:
print("Generator got en error:",e.value)
break
#############################################################
#通过yield实现在单线程的情况下实现并发运算的效果
def consumer(name):
print('%s 准备买面包啦'%name)
while True:
product=yield
print('%s 买了面包%s'%(name,product))
def producer():
c1=consumer('韩梅梅')
c2=consumer('李雷')
c1.__next__()
c2.__next__()
for i in range(10):
time.sleep(1)
print('面包%s和面包%s出炉了!'%(i,i+1))
c1.send(i)
c2.send(i+1)
#producer() # 迭代器
# 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。
#
# isinstance()判断一个对象是否是Iterable对对象
# 生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。
# 把list、dict、str等Iterable变成Iterator可以使用iter()函数 print(isinstance(generator,Iterable))
#True

python3 生成器&迭代器的更多相关文章

  1. python3.7 迭代器和生成器

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 迭代器和生成器 #迭代器协议: ''' 1.迭代器协议是指:对象 ...

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

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

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

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

  4. python学习之- 生成器/迭代器

    列表生成式写法: [ i*2 for i in range(10) ]也可以带函数 [ fun(i) for i in range(10) ] 生成器:一边循环一边计算的机制称为生成器.在常用函数中, ...

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

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

  6. python 生成器 迭代器

    阅读目录 一 递归和迭代 二 什么是迭代器协议 三 python中强大的for循环机制 四 为何要有for循环 五 生成器初探 六 生成器函数 七 生成器表达式和列表解析 八 生成器总结 一 递归和迭 ...

  7. day6学python 生成器迭代器+压缩文件

    生成器迭代器+压缩文件 readme的规范 1软件定位,软件的基本功能2运行代码的方法:安装环境,启动命令3简要的使用说明4代码目录结构说明,更详细点可以说明软件的基本原理5常见问题说明 ====== ...

  8. python 基础 4.4 生成式 生成器 迭代器

    一.生成式和生成器   列表生成式是python受欢迎的语法之一,通过一句简洁的语法就可以对一组元素进行过滤,还可以对得到的元素进行转换处理.   #/usr/bin/python #coding=u ...

  9. PYDay10&11&12&13-常用模块:time|datetime|os|sys|pickle|json|xml|shutil|logging|paramiko、configparser、字符串格式化、py自动全局变量、生成器迭代器

    1.py文件自动创建的全局变量 print(vars()) 返回值:{'__name__': '__main__', '__package__': None, '__loader__': <_f ...

随机推荐

  1. List 用法和实例(转载)

    写在粘贴复制前:英文的感觉也可以,也能看的懂,多看看英文资料没坏处的 Problem. You have questions about the List collection in the .NET ...

  2. html5 drag

    这里是学习html5的拖放功能.这个API主流浏览器基本支持.ie浏览器是有限支持,dataTransfer.setData/getData. 在html5里面,任何元素都是可以拖放的. 需要拖放的元 ...

  3. springmvc json字符串转化成json对象

    问题出现在 :页面数据列表的展示出现 [object HTMLInputElement] 找到问题的所在原因后又三种解决方案 一:格式化json字符串为json对象字符串 success:functi ...

  4. 我的Android第一章

    一.android是什么 基于linux系统下开发的开源系统 二.android的具体架构是什么 硬件[智能设备底层的硬件],驱动[软件和硬件之间沟通的桥梁],Linux系统[一款功能强大代码开源的系 ...

  5. TWebBrowser 调用最新版的Ie Internet Feature Controls (B..C)

    Internet Feature Controls (B..C)   Updated: July 2012 This article describes feature controls with n ...

  6. 当程序报无法复制dll的时候

    当修改程序后,重新编译项目时经常会碰见"无法复制dll到指定路径"的问题.此时,打开任务管理器,关闭所有JP.VDS开头的进程,再重新编译项目即可

  7. XML创建与解析常用方法介绍

    XML解析方式介绍 1.DOM4J(Document Object Model for Java)      虽然DOM4J代表了完全独立的开发结果,但最初,它是JDOM的一种智能分支.它合并了许多超 ...

  8. juqery模板 Templates

    现在已经有了许多JavaScript的解决方案模板,从这方面说,标准化的模板解决方案必然是大势所趋.在本节中,我们向你简要描述四个最流行最有趣的模板.现有的模板解决方案能解决什么?那些特色在jQuer ...

  9. 用户识别APP项目开发计划书

    用户识别APP项目开发计划书        项目介绍: 用户识别APP,通过在有限时间内引导用户A交互,提取用户的行为特征,然后将APP交给用户X(可能是A也可能是陌生人),在1分钟内引导X交互,判断 ...

  10. [转]Meta http-equiv属性详解

    http-equiv顾名思义,相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮助正确和精确地显示网页内容,与之对应的属性值为content,content中的内容其实就是各个参数的变 ...