Python学习之迭代器和生成器有什么不同?

  迭代器和生成器区别是什么?相信很多人在初学Python的时候对它们都很好奇,接下来我们一起来看看它们的区别吧。

  迭代器是一个更抽象的概念,任何对象,如果它的类有next方法和iter方法返回自己的本身,对于string、list、dict、tuple等这类容器对象,使用for循环会更加方便。在后台for语句对容器对象调用iter()函数,iter()是Python内置函数。

  iter()会返回一个定义了next()方法的迭代器对象,在容器中逐个访问容器内元素,next()也是Python的内置函数,无后续元素时,next()会抛出一个StopIteration异常

  生成器是创建迭代器简单而强大的工具,像正规函数,在需要返回数据的时候使用yield语句,每次next()被调用时,生成器会返回它脱离的位置。

  迭代器和生成器区别主要在于生成器可以做迭代器的事情,生成器是一种特殊的迭代器。

(0)

相关推荐

  • Python中迭代器和生成器的区别?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • 面试题-python 什么是迭代器?

    前言 python 里面有 3 大神器:迭代器,生成器,装饰器.在了解迭代器之前,需弄清楚2个概念: 1.什么是迭代 2.什么是可迭代对象 迭代 如果给定一个list或tuple,我们可以通过for循 ...

  • 总算搞明白了!进程,线程,协程,生成器,迭代器搞的我脑子好乱!

    你是否曾经被迭代器,生成器,进程,线程,协程搞的脑子很乱? 而且剪不断,理还乱: 这不怪你,这是有历史原因.本文试图把东西都给理顺了. 一篇不行,咱们就再来一篇,使劲点赞. 两个问题,三种协程 先来看 ...

  • python 生成器 & 迭代器

    在聊生成器之前,我们先看看什么是生成式? a = [i*2 for i in range(10) ]    类似于这样的就是生成式 而把列表 " [ ] " 符号换成 " ...

  • Python学习——for循环,生成器,迭代器详解

    文章目录 Python的for循环 for循环示例 List 列表循环 dict 字典循环 列表生成式 生成器 列表式生成器 函数式生成器 生成器式生产者消费者模型 迭代器 什么是迭代器 再论for循 ...

  • Python基础篇--迭代器,生成器和装饰器

    迭代 遵循迭代器协议时,需要Python迭代器对象支持两种方法. __iter__返回迭代器对象本身.这用于for 和in语句. __next__方法从迭代器返回下一个值.如果没有其他项目要返回,则应 ...

  • python菜鸟教程学习8:迭代器与生成器

    迭代器 python最强大的功能之一,访问集合元素的一种方式.迭代器是一个可以记住遍历的位置的对象,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束,迭代器只能往前不会后退. 迭代器有 ...

  • Python迭代器与生成器的区别!

    无论你是Python初学者还是爱好者,相信大家都听说过迭代器与生成器,但是很多同学搞不懂Python迭代器与生成器到底是什么?它们之间又有什么样的关系呢?接下来,小编通过这篇文章为大家介绍一下. 什么 ...

  • 一文读懂Python可迭代对象、迭代器和生成器

    IT头条 每日推送最新.最热点的IT界新闻 马化腾回应"腾讯没有梦想"截图系网友PS:天天P图回应<我的前世青年照>涉嫌收集个人隐私:马云称阿里不愿招北大清华毕业生-- ...

  • Python高级用法总结—(列表推导式,迭代器,生成器,装饰器)

    Python高级用法总结-(列表推导式,迭代器,生成器,装饰器) 列表推导式(list comprehensions) 场景1:将一个三维列表中所有一维数据为a的元素合并,组成新的二维列表. 最简单的 ...

  • Python学习教程:Python 内置函数最全汇总(上篇)

    Python学习教程:Python 内置函数最全汇总(一) 1 abs() 绝对值或复数的模 In [1]: abs(-6)Out[1]: 6 2 all() 接受一个迭代器,如果迭代器的所有元素都为 ...

  • Python学习教程:Python内置函数大总结(下篇)

    这里接着上次的Python学习教程,给大家总结了Python 剩下的33个内置函数. 31 hash() 返回对象的哈希值 In [112]: hash(xiaoming)Out[112]: 6139 ...