一、列表生成式:
1、生成一个列表:
list = [ i*2 for i in range(10)]       #使用列表生成式生成一个列表,占据内存空间,当数量大时会造成很大的浪费。
print(list)
2、使用生成器生成列表:(generator)
list1 = ( i*2 for i in range(10))      #将生成列表的公式存在变量中,需要的时候取一下,(注:缺点是只能往后一个个取)
print(list1.__next__())                    #使用__next__取数据,一次取一个数,当取完时抛出StopIteration错误
for i in list1:              #由于一次一次的取比较麻烦,我们还可以使用for循环来取
print(i)                
3、如果需要推算的结果使用列表无法生成式,我们还可以使用函数来制作生成器,如斐波拉契数列。
斐波拉契数列:(fibonacci)
介绍:斐波拉契数列,是一种除了第一个和第二个数外,任意一个数都可由前两个数相加得到
由python函数实现斐波拉契数列:
def fib(a,b,max):                           #a是指斐波拉契中的第一个数,b指斐波拉契中的第二个数,max指相加几次
n=0
while n<max:
print(b)
a,b=b,a+b
n=n+1
return'done'
fib(10,15,12)
如果要将上面的函数变成生成器,只要将print(b)改成yield b就可以了
yield:每次调用到yield时返回结果,并保存现在的位置,再次执行时从保存的位置继续。
def fib(a,b,max):
n = 0
while n < max:
yield b
a, b = b, a + b
n = n + 1
return 'done'
f = (fib(10,15,12))                #将函数指定为一个变量,通过变量来取值,不然无法边取值边传参。
print(f.__next__())
print(f.__next__())
print(f.__next__())

转载于:https://www.cnblogs.com/caibaofei/p/8991715.html

十一、python生成器和迭代器相关推荐

  1. python生成器和迭代器作用_浅谈Python中的生成器和迭代器

    迭代器 迭代器协议 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么返回一个异常来终止本次迭代.(只能往前走,不能往后退!) 迭代器对象 遵循了(实现了)迭代器协议的对象.(对象内 ...

  2. Python生成器与迭代器

    Python生成器与迭代器 前言 首先,来让我们弄清楚可迭代对象 可迭代对象 在python中,可迭代对象并不是指某种具体的数据类型,它是指存储了元素的一个容器对象 也就是说,如果容器里面没有存储数据 ...

  3. 详解 Python 生成器与迭代器 及其区别

    前言 不论是初学python还是python进阶,这都是绕不开的知识点,生成器与迭代器的概念相较于其他基础概念显得晦涩难懂,知识点囊括很多方面,查阅越多的资料,头就越大,现在这加以理解归纳总结. 相关 ...

  4. Python生成器、迭代器

    Python生成器.迭代器 一.生成器(generator) 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的 ...

  5. 彻底理解Python生成器和迭代器

    目录 1.列表生成式 2.生成器 3.迭代器 4.对yield的总结 5.补充:itertools库学习 1.列表生成式 首先举个例子 现在有个需求,看列表 [0,1,2,3,4,5,6,7,8,9] ...

  6. Python生成器与迭代器详细教程

    一.列表生成器 首先举个例子 现在有个需求,看列表 [0,1,2,3,4,5,6,7,8,9],要求你把列表里面的每个值加1,你怎么实现呢? 方法一(简单): info = [0, 1, 2, 3, ...

  7. 没有5年测开经验,还真说不清Python生成器、迭代器、装饰器

    一.什么是生成器? 使用了yield函数 就被称之为生成器,生成器是一个返回迭代器的函数,说白了生成器就是迭代器,只能用于迭代操作. 不懂?没关系,下面就一个斐波那契数列为例来进行讲解: 依靠简单循环 ...

  8. python生成器和迭代器

    Python3迭代器和生成器 很多朋友在初次接触 python 的 迭代器 和 生成器 时,总是不理解 生成器 和 迭代器的作用 和它们之间的关系,今天笔者来详细的讲解一下. 知识点目录: 一.迭代器 ...

  9. python生成器与迭代器(配套相关案列解析用法)

    一.python生成器简介 在 Python 中,使用了 yield 的函数被称为生成器(generator).跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就 ...

  10. python生成器和迭代器详解

    文章目录 前言 一.迭代器--从一个简单例子入手 1.1 实现__iter__成为迭代对象 1.2 通过实现__next__方法成为迭代器 二.生成器 -- 更加简单的迭代器 2.1来个简单例子 2. ...

最新文章

  1. html阴影特效作品及代码,纯CSS做特效网页(阴影,透明,画圆圈等等)
  2. Linux设备模型组件-类设备-设备类及subsystem
  3. TCP协议面试灵魂10问 | 强势整理
  4. iOS----------The app's Info.plist must contain an NSPhotoLibraryUsageDescription key
  5. AWS CEO Andy Jassy 专访:我们一直思考的是未来 2-5 年的事 | 人物志
  6. ABP源码分析四十七:ABP中的异常处理
  7. PHP三元运算符 isset($_GET['id']) ? $_GET['id'] : ”
  8. sql语句分析是否走索引_Mysql中SQL语句不使用索引的情况
  9. CRM系统提高企业核心竞争力
  10. java 定时为每月10号,Spring 定时任务如何实现每周一某个时间执行?
  11. 使用vue-i18n实现多语言
  12. WPS Word添加或删除页面上/下方的横线
  13. 用计算机制作演示文稿教案博客,《创作演示文稿》教学设计
  14. JenKins添加Git报错Error performing git command: git ls-remote -h
  15. three.js判断两个向量(角度)夹角误差是否小于某个值
  16. 定了!不缴社保的,惨了!
  17. 对算法的时间复杂度的理解
  18. Transform.Forward和Vector3.Forward的正确使用方法
  19. Python每日一练(5)-百词斩
  20. 牛客网 掷骰子问题 网易 动态规划

热门文章

  1. python统计文件字数_python统计文本文件的字数
  2. vue 动态绑定 video src,不能正常播放问题
  3. 新版WebStorm安装详细流程
  4. PTVS 安装操作指南
  5. 创建一个 Git 版本库
  6. QQ网页登陆密码加密方式(农场、空间、WebQQ等通用)
  7. codesmith 模板
  8. ASP.NET Forms验证 实现子域名(SubDomain)共享登陆下的缺陷 [转]
  9. 笔记-网页内嵌Google地图与地理位置模拟
  10. spring基础Bean管理基于xml注入