前言:

我们来了解一下什么是python中生成器。了解一下python生成器是什么,以及生成器在python编程之中能起到什么样的作用。

定义:

生成器和迭代器

通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。

要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:

>>> L = [x * x for x in range(10)]>>>L

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]>>> g = (x * x for x in range(10))>>>g at 0x1022ef630>

在上面的例子中:(x * x for x in range(10))是生成器,g是迭代器。

因为生成器是能够返回一个迭代器的函数,其最大的作用是将输入对象返回为一个迭代器

生成器是个函数!迭代器是个对象!在python3.5中,range(5)是一个生成器,返回的结果是一个对象,即 at 0x1022ef630>就是一个迭代器

我们创建了一个generator后,通过for循环来迭代它,并且不需要关心StopIteration的错误。

g = (x * x for x in range(10))for i ing:

print(i)

运行结果:

0

1

4

9

16

25

36

49

64

81

或者我们可以通过__next__()从生成器中取值

g = (x * x for x in range(10))

print(g.__next__())

print(g.__next__())

print(g.__next__())

print(g.__next__())

运行结果:

0

1

4

9

generator非常强大。如果推算的算法比较复杂,用类似列表生成式的for循环无法实现的时候,还可以用函数来实现。

创建迭代器

A、使用内建的工厂函数iter(iterable)可以将可迭代序列转换为迭代器

a=[1,2,3,4]

b=(1,2,3)

str='Tomwenxing'print(iter(a))

print(iter(b))

print(iter(str))

python生成器迭代_python中的生成器和迭代器相关推荐

  1. 如何用python生成软件_python中的生成器函数是如何工作的?

    1. python中的普通函数是怎么运行的? 当一个python函数在执行时,它会在相应的python栈帧上运行,栈帧表示程序运行时函数调用栈中的某一帧.想要获得某个函数相关的栈帧,则必须在调用这个函 ...

  2. python可迭代_python中可迭代对象有哪些

    Python中的可迭代对象有哪些?Python中的可迭代对象有:列表.元组.字典.字符串:常结合for循环使用: 判断一个对象是不是可迭代对象:from collections import Iter ...

  3. python循环迭代_Python中循环迭代的重做

    不,Python不直接支持redo.有一个选项可能会让嵌套循环变得非常糟糕,比如:for x in mylist: while True: ... if shouldredo: continue # ...

  4. java 枚举迭代_Java中的枚举和迭代器之间的区别

    java 枚举迭代 Java中的枚举与迭代器 (Enumeration vs Iterator in Java) Here, we will see how Enumeration differs f ...

  5. python中用于生成数字序列的函数_Python中的生成器?

    自从PEP 255引入以来,生成器就一直是python的重要组成部分. python中的Generator是一种特殊的例程,可用于控制循环的迭代行为.生成器类似于返回数组的函数.生成器具有参数,我们可 ...

  6. python圆形生成器_python中的生成器

    什么是生成器? 生成器是一个包含了特殊关键字yield的函数.当被调用的时候,生成器函数返回一个生成器.可以使用send,throw,close方法让生成器和外界交互. 生成器也是迭代器,但是它不仅仅 ...

  7. python四大器_Python编程四大神兽:迭代器、生成器、闭包和装饰器

    生成器 生成器是生成一个值的特殊函数,它具有这样一个特点:第一次执行该函数时,先从头按顺序执行,在碰到yield关键字时该函数会暂停执行该函数后续的代码,并且返回一个值:在下一次调用该函数执行时,程序 ...

  8. jsp value设置为函数的返回值_python中的生成器函数是如何工作的?

    1. python中的普通函数是怎么运行的? 当一个python函数在执行时,它会在相应的python栈帧上运行,栈帧表示程序运行时函数调用栈中的某一帧.想要获得某个函数相关的栈帧,则必须在调用这个函 ...

  9. python中迭代_python中的迭代什么意思

    python中的迭代什么意思 发布时间:2020-09-21 12:33:45 来源:亿速云 阅读:67 作者:Leah 这期内容当中小编将会给大家带来有关python中的迭代什么意思,文章内容丰富且 ...

最新文章

  1. KA,连接池居然这么简单?
  2. 《React Native移动开发实战》一一3.4 完善商品列表——ListView组件
  3. 后端用python还是php_【后端开发】2019学python还是php
  4. 国科大prml12-半监督学习
  5. python时间比较好_花了半个月时间,终于找到了一款最适合的python教程
  6. copy linux file to mac,Mac Linux互相传递文件
  7. Java后端实现websocket与微信小程序端连接简单例子
  8. Inpaint 强大的去水印、改图软体,轻鬆把不要的物件从相片中移除
  9. 通过注册表永久禁用系统UAC功能
  10. java的cms系统_Java的CMS系统-赤兔云
  11. 诛仙mysql架设_目前最完整的诛仙私服架设教程
  12. 安卓手机格式化怎么弄_安卓手机怎么格式化?
  13. 上海市计算机三级 是什么水平,上海计算机等级考试跟全国计算机等级考试有什么区别吗?...
  14. 【官宣】BSV工程师能力认证项目在CSDN推出线上学习平台
  15. 说说职场中的交流和沟通(转)
  16. 更新被拒绝,因为远程仓库包含您本地尚不存在的提交
  17. 看影片《明日边缘》有感
  18. uva1471 Defense Lines
  19. COSCOI拥有知识产权的“Go East”角色在东南亚大受欢迎,为全球扩张铺平道路
  20. VS2019设置代码自动换行

热门文章

  1. android 自定义相机,Camera,相机遮罩层
  2. vue时间过滤器filter
  3. cesium billboard 点击 不想显示infobox
  4. mpvue 从零开始 女友的来电 4 flyio
  5. linux使用root操作文件,以root用户登录Linux系统,当前目录是/root,要求完成如下操作和功...
  6. mysql5.6定时备份_Mysql自动备份
  7. 四、COSMIC功能点实操
  8. 自定义select样式
  9. spring----06 更多DI知识
  10. GCD与LCM【数论】