1 迭代器是一个更抽象的概念,任何对象,如果它的类有next方法和iter方法返回自己本身。对于string、list、dict、tuple等这类容器对象,使用for循环遍历是很方便的。在后台for语句对容器对象调用iter()函数,iter()是python的内置函数。iter()会返回一个定义了next()方法的迭代器对象,它在容器中逐个访问容器内元素,next()也是python的内置函数。在没有后续元素时,next()会抛出一个StopIteration异常

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

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

本文首发于Python黑洞网,CSDN同步跟新

python面试题之迭代器和生成器的区别相关推荐

  1. python有关迭代器和生成器的面试题_【面试题 | Python中迭代器和生成器的区别?】- 环球网校...

    [摘要]今天给大家解答一道Python常见的面试题,希望这个面试栏目,给那些准备面试的同学,提供一点点帮助!小编会从最基础的面试题开始,每天一题.如果参考答案不够好,或者有错误的话,麻烦大家可以在留言 ...

  2. python yield用法_Python中迭代器和生成器的区别?

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

  3. 完全理解 Python 迭代对象、迭代器、生成器(转)

    完全理解 Python 迭代对象.迭代器.生成器 本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators » nvie.com,俺写的这篇文章是 ...

  4. python:容器、迭代器、生成器 简单介绍

    python:容器.迭代器.生成器 简单介绍 python提供了多种数据类型来存放数据项. 之前已经介绍了几个python中常用的容器,分别是列表list.元组tuple.字典dict和集合set. ...

  5. 迭代器和生成器的区别

    迭代器和生成器的区别如果说迭代器是以类为基础的单位产生器,那么生成器(generator)就是以函数为基础的单位产生器.也就是说,迭代器和生成器都是一个值一个值得生产,每迭代一次,只能得到一个值,所不 ...

  6. 完全理解Python迭代对象、迭代器、生成器

    本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators,俺写的这篇文章是按照自己的理解做的参考翻译,算不上是原文的中译版本,推荐阅读原文,谢谢网 ...

  7. 完全理解python迭代对象_完全理解Python迭代对象、迭代器、生成器

    1.assert:python assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假.可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触 ...

  8. python函数知识四 迭代器、生成器

    15.迭代器:工具 1.可迭代对象: ​ 官方声明,只要具有__iter__方法的就是可迭代对象 list,dict,str,set,tuple -- 可迭代对象,使用灵活 #方法一: list.__ ...

  9. python (八)迭代器、生成器、列表推导式

    一.迭代器 1.先来讲讲什么是可迭代对象 字符串.列表.元组.字典.集合都可以被for循环,说明他们都是可迭代的. 2.怎么判断是不是一个可迭代对象 判定方法:内部含有'__iter__'方法的数据就 ...

最新文章

  1. file.delete删除不了文件_如何解决C盘莫名出现的msdia80.dll文件
  2. 用户操作-用户详情查询流程分析
  3. 图解 Python 深拷贝和浅拷贝
  4. 云存储精华问答 | 云存储的优势在哪?
  5. JDK源码解析之 java.lang.Class
  6. .html文件可以删掉吗,packages文件夹可以删除吗?
  7. 详解MariaDB数据库的事务
  8. Qt不规则窗体和按键
  9. Java经典实例:在正则表达式中控制大小写
  10. 【SPOJ-SUBLEX】Lexicographical Substring Search(字典序第k小的子串(不重复统计同一个子串)---后缀自动机)
  11. Ms08067年度技术文集合
  12. Mac电脑分屏软件——Spectacle
  13. 为何台湾在移动互联网时代远远落后于大陆?
  14. 软工网络15团队作业4——Alpha阶段敏捷冲刺之Scrum 冲刺博客(Day3)
  15. OA协同办公系统-day01
  16. c语言中sub是什么指令,汇编 – SUB指令的目的是什么?
  17. Android proguard 详解(一)
  18. 第三方支付机构的资本:客户备付金
  19. Markdown 中 LaTex 数学公式命令
  20. 求一个整数的百位数,十位数,个位数

热门文章

  1. 拉格朗日乘数法_拉格朗日乘数法介绍(不含证明)
  2. java rest 序列化_Django Rest Framework中的序列化和反序列化
  3. (91)FPGA时钟分频与倍频问题,面试必问(十五)(第19天)
  4. (24)Verilog HDL条件语句:case语句
  5. (22)FPGA面试题名词解释IRQ、BIOS、USB、VHDL、SDR
  6. Linux中断(interrupt)子系统之二:arch相关的硬件封装层
  7. Linux设备树 .dtb文件,内核使用dtb文件的过程
  8. 计算机专业在沈阳有什么发展,985 计算机专业在全国 TOP10 在沈阳
  9. 【LeetCode】剑指 Offer 38. 字符串的排列
  10. 【LeetCode】剑指 Offer 13. 机器人的运动范围