迭代器与list相比较,就for in句型循环拿数据而言:

  用list写很简洁,但如果list数据过大,会很消耗资源。

  用iteration 迭代器写,则不会消耗那么多资源。他会随用随取,用一个拿一个。但是你要会先写一个迭代器类,然后才能for in,这样就很不简洁。

有没有既像list那样简洁,又像迭代器那样省资源的方法呢。yield 生成器来了:

#非波那且数列:
def func(max): #参数表示要返回前max个非波那且数#n是计数用,a b分别为第一和第二个肥波那切数n, a, b = 0, 0, 1while n < max:yield ba, b = b, a + bn += 1#以上就是一个生成器,写法比较简洁,用起来也很方便
for i in func(5):print i#以上操作是依次打印出前五个肥波那切数。'''注意:'''
'''
func是函数,不可迭代
func(5)是生成器,可迭代
生成器与迭代器效果很相似,单纯调用func(5)没用,而是要调用他的next方法
'''
f = func(7)
print f.next()
print f.next()
print f.next()
#以上是打印出前三个肥波那切数的操作
#反过来说,for in 操作会自动触发迭代器和生成器的next方法

yield把func函数给变了,不是一般函数了。func中没写return,但是func(5)的话你会发现,返回了一个generation生成器对象。

所以yield作用就是把函数变成一个生成器,可实现与iteration同样的效果,每次调用next方法,直到抛出异常停止。

 

转载于:https://www.cnblogs.com/lipijin/p/3341987.html

Python生成器 yield相关推荐

  1. js date 当前日志往后一个月_【应用实例】如何利用 Python 生成器 yield 监控日志?...

    Python 生成器 yield 是编写基于处理管道,流或数据流程序的一种极其强大的方式,在<Python参考手册>中有一则实例非常简单实用,略加修改,分享一下给大家.如果你对生成器yie ...

  2. python生成器yield原理_Python generator生成器和yield表达式详解

    前言 Python生成器(generator)并不是一个晦涩难懂的概念.相比于MetaClass和Closure等概念,其较为容易理解和掌握.但相对于程序结构:顺序.循环和分支而言其又不是特别的直观. ...

  3. python生成器yield原理_Python的迭代器和生成器 使用实例及yield的使用

    <派森>(Python)3.13 win32 英文安装版 类型:编程工具大小:21M语言:英文 评分:8.7 标签: 立即下载 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素 ...

  4. python生成器yield原理_生成器yield关键字详解

    鉴于yield关键字的原理大家理解的都不是很深刻,今天我们主要就这一课题进行探讨. 生成器可以用什么方式得到? 方法一: 利用推导式的方式得到生成器# 列表推导式 list1 = [i for i i ...

  5. Python生成器next方法和send方法区别详解

    yield的语法规则是: 在yield这里暂停函数执行,并返回yield后面表达式的值(默认为None),直到被next()再次调用时,从上次暂停的yield代码处继续往下执行.当没有可继续next( ...

  6. python中yield的认识与学习|生成器

    接触python,yield就有点难度啦.都知道包含这个yield的函数就不是普通函数啦.就是一个生成器函数. 类型:<generator object test1 at 0x01D89220& ...

  7. python生成器单线程_【Python】迭代器、生成器、yield单线程异步并发实现详解

    转自http://blog.itpub.net/29018063/viewspace-2079767 大家在学习python开发时可能经常对迭代器.生成器.yield关键字用法有所疑惑,在这篇文章将从 ...

  8. Python 生成器(yield)

    Python 生成器 一.生成器(generator) Python 的生成器是一种特殊的程序,可以被用作控制循环的迭代行为.生成器可以暂时挂起函数,并保留函数的局部变量等数据,然后在再次调用它的时候 ...

  9. Python 生成器 和 yield 关键字

    Python 中 yield 的作用:http://youchen.me/2017/02/10/Python-What-does-yield-do/# Python 生成器详解:http://codi ...

最新文章

  1. 一个小小的AI训练营竟然卧虎藏龙
  2. nginx用户权限问题
  3. mysql-explain
  4. springboot 与shiro整合
  5. 20165115 2017-2018-2 《Java程序设计》第六周学习总结
  6. oracle 联表求和不重复_糊涂了10年,这个Excel公式到底是怎么不重复计数的?
  7. Eclipse中直接执行sql语句(图文说明)
  8. SuiteCRM中的控制器
  9. 《君生我未生,我生君已老》详解
  10. 2012服务器系统 3389,windows 2012r2如何修改默认的3389远程端口
  11. cf 936B Sleepy Game
  12. 计算机 无法进入睡眠模式,win7电脑无法正常进入睡眠模式怎么办
  13. #读书笔记#《富爸爸窮爸爸》 | Rich Dad Poor Dad 罗伯特.清崎 Robert Kiyosaki
  14. Salesforce常用技能
  15. 理解Nurbs曲线/曲面的参数空间
  16. 一位资深程序员的亲身经历:跳槽国企要注意啥
  17. iFIXIT认为 HTC One M8 是近年最难维修的手机之一
  18. IC617工艺库安装问题
  19. Windows Azure Platform (四) Windows Azure架构
  20. bat批处理文件按顺序执行exe

热门文章

  1. php重点,php – 课程。重点是什么?
  2. springboot 启动加载数据库数据到redis缓存
  3. ModuleNotFoundError: No module named ‘exceptions‘
  4. “杭银理财”杯浙江工业大学大学生程序设计竞赛暨全国邀请赛 签到题9题
  5. 技嘉GA7PESH3主板,官网驱动下载,官方使用说明
  6. 【codevs1282】约瑟夫问题
  7. mysql 记录为叶子结点,MySQL---索引
  8. c gui qt 4编程第二版_一本专门学习PyQt5 GUI编程的书
  9. 新浪下拉菜单(js原生版本)
  10. 数据结构—队列、循环队列、双端队列