python迭代器和生成器区别

迭代器是一个更抽象的概念,任何对象,如果它的类有 next 方法和 iter 方法返回自己本身,对于 string、list、dict、tuple 等这类容器对象,使用 for 循环遍历是很方便的。

python迭代器和生成器区别

在后台 for 语句对容器对象调用 iter()函数,iter()是 python 的内置函数。iter()会返回一个定义了 next()方法的迭代器对象,它在容器中逐个访问容器内元素,next() 也是 python 的内置函数。在没有后续元素时,next()会抛出一个 StopIteration 异常。(推荐学习:Python视频教程)

# 随便定义一个listlistArray=[1,2,3]# 使用iter()函数iterName=iter(listArray)print(iterName)

登录后复制

生成器(Generator)是创建迭代器的简单而强大的工具。它们写起来就像是正规的函数,只是在需要返回数据的时候使用 yield 语句。每次 next()被调用时,生成器会返回它脱离的位置(它记忆语句最后一次执行的位置和所有的数据值)

# 菲波那切数列def Fib(max):    n, a, b = 0, 0, 1    while n < max:        yield b        a, b = b, a + b        n = n + 1    return '亲!没有数据了...'# 调用方法,生成出10个数来f=Fib(10)# 使用一个循环捕获最后return 返回的值,保存在异常StopIteration的value中while  True:    try:        x=next(f)        print("f:",x)    except StopIteration as e:        print("生成器最后的返回值是:",e.value)        break

登录后复制

区别:

立即学习“Python免费学习笔记(深入)”;

生成器能做到迭代器能做的所有事,而且因为自动创建了 iter()和 next()方法,生成器显得特别简洁,而且生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保存程序状态的自动方法,当发生器终结时,还会自动抛出 StopIteration 异常。

更多Python相关技术文章,请访问Python教程栏目进行学习!

以上就是python迭代器和生成器区别的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2255972.html

(0)
上一篇 2025年2月27日 03:00:16
下一篇 2025年2月23日 10:17:56

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • python如何遍历字符串

    python如何遍历字符串?下面给大家介绍四种方法: 1、第一种方式,for in girl_str = “love You” for everyChar in girl_str:    print (everyChar)    love …

    2025年2月27日
    200
  • python中字符串数组如何逆序排列

    python中字符串数组如何逆序排列?下面给大家介绍几种方法: 1、数组倒序: 原始元素的倒序排列 (1)切片 立即学习“Python免费学习笔记(深入)”; >>> arr = [1,2,3,4,3,4]>>…

    2025年2月27日
    200
  • python程序如何快速缩进多行代码

    该语言中缩进是其精髓,通过缩进可以表示函数、循环等程序结构的范围。有时写完程序后,发现所有程序需要放入函数def中,这时就需要对一整块程序同时进行缩进,还有其他一些情况,也会需要多行整体缩进。下面介绍官方的idle编辑器下,如何实现多行整体…

    2025年2月27日 编程技术
    200
  • python函数与方法的区别

    本篇内容主要介绍从几个维度来介绍下python中函数和方法的区别: 首先,从分类的角度来分析。 (1)函数的分类:(推荐学习:Python视频教程) 内置函数:python内嵌的一些函数。 匿名函数:一行代码实现一个函数功能。 立即学习“P…

    2025年2月27日
    200
  • python中的单引号双引号有什么区别

    python中的单引号双引号有什么区别呢?下面给大家详细的介绍一下: 先说双引号与三引号的区别,双引号所表示的字符串通常要写成一行。 如:  s1 = “hello,world” 登录后复制 如果要写成多行,那么就要使用 (“连行符”)吧,…

    2025年2月27日
    200
  • format在python中是什么意思

    python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。 基本语法是通过 {} 和 : 来代替以前的 % 。 format函数可以接受不限个参数,位置可以不按顺序。 实例 >&gt…

    2025年2月27日
    200
  • python编译器和解释器的区别

    高级语言不能直接被机器所理解执行,所以都需要一个翻译的阶段,解释型语言用到的是解释器,编译型语言用到的是编译器。 编译型语言通常的执行过程是:源代码——预处理器——编译器——目标代码——链接器——可执行程序。 某种意义上来说预处理事实上是一…

    2025年2月27日
    200
  • set在python里是什么意思

    set在python里是什么意思?  set是一组数,无序,内容又不能重复,通过调用set()方法创建: >>> s = set([‘A’, ‘B’, ‘C’]) 登录后复制 对于访问一个set的意义就仅仅在于查看某个元素…

    2025年2月27日
    200
  • python类方法和静态方法的区别

    python完全支持定义类方法,甚至支持定义静态方法。python的类方法和静态方法很相似,它们都推荐使用类来调用(其实也可使用对象来调用)。 类方法和静态方法的区别 Python会自动绑定类方法的第一个参数,类方法的第一个参数(通常建议参…

    2025年2月27日
    200
  • python注释怎么写

    python注释怎么写? 确保对模块, 函数, 方法和行内注释使用正确的风格 Python中的注释有单行注释和多行注释: Python中单行注释以 # 开头,例如:: # 这是一个注释print(“Hello, World!”) 登录后复制…

    2025年2月27日
    200

发表回复

登录后才能评论