可迭代对象


mylist 是一个可迭代的对象。当你使用一个列表生成式来建立一个列表的时候,就建立了一个可迭代的对象:

>>> mylist = [x*x for x in range(3)]
>>> for i in mylist :
...    print(i)
0
1
4
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里,所有的值都存在内存当中,所以并不适合大量数据

生成器


  • 可迭代
  • 只能读取一次
  • 实时生成数据,不全存在内存中
 >>> mygenerator = (x*x for x in range(3))
>>> for i in mygenerator :
...    print(i)
0
1
4
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注意你之后不能再使用for i in mygenerator

yield关键字


  • yield 是一个类似 return 的关键字,只是这个函数返回的是个生成器
  • 当你调用这个函数的时候,函数内部的代码并不立马执行 ,这个函数只是返回一个生成器对象
  • 当你使用for进行迭代的时候,函数中的代码才会执行
>>> def createGenerator() :
...    mylist = range(3)
...    for i in mylist :
...        yield i*i
...
>>> mygenerator = createGenerator() # create a generator
>>> print(mygenerator) # mygenerator is an object!
<generator object createGenerator at 0xb7555c34>
>>> for i in mygenerator:
...     print(i)
0
1
4
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

第一次迭代中你的函数会执行,从开始到达 yield 关键字,然后返回 yield 后的值作为第一次迭代的返回值. 然后,每次执行这个函数都会继续执行你在函数内部定义的那个循环的下一次,再返回那个值,直到没有可以返回的。

控制生成器的穷尽


>>> class Bank(): # let's create a bank, building ATMs
...    crisis = False
...    def create_atm(self) :
...        while not self.crisis :
...            yield "$100"
>>> hsbc = Bank() # when everything's ok the ATM gives you as much as you want
>>> corner_street_atm = hsbc.create_atm()
>>> print(corner_street_atm.next())
$100
>>> print(corner_street_atm.next())
$100
>>> print([corner_street_atm.next() for cash in range(5)])
['$100', '$100', '$100', '$100', '$100']
>>> hsbc.crisis = True # crisis is coming, no more money!
>>> print(corner_street_atm.next())
<type 'exceptions.StopIteration'>
>>> wall_street_atm = hsbc.create_atm() # it's even true for new ATMs
>>> print(wall_street_atm.next())
<type 'exceptions.StopIteration'>
>>> hsbc.crisis = False # trouble is, even post-crisis the ATM remains empty
>>> print(corner_street_atm.next())
<type 'exceptions.StopIteration'>
>>> brand_new_atm = hsbc.create_atm() # build a new one to get back in business
>>> for cash in brand_new_atm :
...    print cash
$100
$100
$100
$100
$100
$100
$100
$100
$100
...

python 关键字field相关推荐

  1. python 关键字大全_一日一技:用实例列举python中所有的关键字(01)

    Python关键字列表 本教程提供有关Python中使用的所有关键字的简要信息. 关键字是Python中的保留字.我们不能将关键字用作变量名,函数名或任何其他标识符. 以下是Python中所有关键字的 ...

  2. python关键字和保留字_或带有Python示例的关键字

    python关键字和保留字 Python或关键字 (Python or keyword) or is a keyword (case-sensitive) in python, it is a log ...

  3. python关键字的意思_python 关键字(Keywords)

    2018-04-30 python 关键字(Keywords) 声明:本文章大部分来自下面博客,对其作者表示感谢.以后会有详细的关键字说明. 1.and: 表示逻辑'与' 2.del: 用于list列 ...

  4. python关键字参数可以避免什么问题_python入门课|Python关键字参数使用方法公布,能解决80%的python函数问题...

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注py ...

  5. 微课系列(6):Python关键字else的三种用法

    技术要点:Python关键字else在选择结构.循环结构和异常处理结构中的三种用法. ----------相关阅读---------- 教学课件 1900页Python系列PPT分享一:基础知识(10 ...

  6. [转载] python关键字和保留字_Python关键字

    参考链接: Python关键字和标识符 python关键字和保留字 关键词 (Keywords) Keywords are the reserved words in Python programmi ...

  7. Python关键字和标识符

    Today we will learn about Python keywords and identifiers. Earlier we learned how to install python ...

  8. python:keyword --- 检验Python关键字

    python:keyword --- 检验Python关键字 此模块使 Python 程序可以确定某个字符串是否为 关键字 或 软关键字. keyword.iskeyword(s) 如果 s 是一个 ...

  9. python关键字中文意思_中英文简单介绍Python关键字 -- Python Key Words

    直奔主题,理解Python关键字有利于正确理解Python中的命令,对于系统掌握Python语法有着十分重要的作用. 1, False : Boolean Value as no 2, True : ...

最新文章

  1. 克服汽车摄像头连接挑战
  2. .NET连接SAP系统专题:C#调用RFC代码(三)
  3. ubuntu 修改root密码
  4. 英雄联盟离线更新方法
  5. 唱好铁血丹心谐音正规_孩子想学唱歌?儿童声乐怎么学才好?
  6. Spring Boot 如何自定义Starter,你知道吗?
  7. iphone android传照片大小,iPhone与安卓跨平台如何传照片图文教程
  8. android搭建https,android 搭建https Server(示例代码)
  9. Vista SP1、IIS7,安装ASP.Net 1.1、VS2003、NetAdvantage 2004vol、Sql Server2000全攻略
  10. CDH5.16.2下载安装
  11. 小学奥数 7657 连乘积末尾0的个数 python
  12. 【git】git如何添加本地不是git的项目到Git库中
  13. 安装j2ee开发环境
  14. 规则引擎实现生产调度系统
  15. echarts自定义象形图,矢量图标
  16. 谷歌浏览器访问接口无返回
  17. 日常学习笔记-RGB配色和颜色转换
  18. 服务器显示无vga电缆怎么回事,无vga电缆是什么意思
  19. Windows系统下安装VMware Workstation并创建Xubuntu虚拟环境
  20. 计算机里面的管理工具在哪,电脑的资源管理器在哪

热门文章

  1. mysql 悲观锁 性能_mysql的乐观锁和悲观锁
  2. env.render() 出现 your graphic drives do not support OpenGL 2.0
  3. 微软认证最新技术技巧
  4. 完美恢复Word文档,丢失、乱码和受损三大症状不再是难题
  5. 三星SDS推出企业人工智能聊天机器人Brity
  6. 【ArcGIS自定义脚本工具】利用聚合方法批量生成分辨率降低版本的栅格
  7. ios中图层的用法(1)
  8. 你知道嵌入式可以做什么工作吗?
  9. Windows10 重装系统后显示字体不清楚的问题如何解决
  10. 加密与安全(个人笔记)