迭代器

  已知,可以直接作用于for循环的数据类型有:

  一类是集合数据类型,如list、tuple、dict、set、str

  一类是generator,包括生成器和带yield的generator function

  这些可以直接作用于for循环的对象统称为可迭代对象:Iterable

 判断是否为可迭代对象:

>>> from collections import Iterable
>>> isinstance([],Iterable)
True
>>> isinstance({},Iterable)
True
>>> isinstance('abc',Iterable)
True
>>> isinstance(x*2 for x in range(10),Iterable)
True
>>> isinstance(100,Iterable)
False

  可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator

判断是否为迭代器:

>>> from collections import Iterator
>>> isinstance([],Iterator)
False
>>> isinstance({},Iterator)
False
>>> isinstance('abc',Iterator)
False
>>> isinstance((x*2 for x in range(10)),Iterator)
True
>>> isinstance(100,Iterator)
False

  使用iter()函数可将list、dict、str等Iterable变成Iterator

为什么list、dict、str等数据类型不是Iterator?

  因为python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误,可以把这个数据流看作是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。

  Iterator可以表示一个无限大的数据流,例如全体自然数,而使用list是永远不可能存储全体自然数的。

另外:

  python的for循环本质上就是通过不断调用next()函数实现的,例如:

    for x in [1,2,3,4,5]:

      pass

  实际上完全等价于:

#首先获得Iterator对象:
it = iter([1,2,3,4,5])
#循环:
while True:try:#获得下一个值x = next(it)except stopIteration:#遇到stopiteration就退出循环break

转载于:https://www.cnblogs.com/chy-op/p/10179638.html

python入门之迭代器相关推荐

  1. python入门教程非常详细-Python编程入门教程:从入门到高级,非常详细

    本文的资料和内容是我下载的,觉得非常有用,于是转过来大家瞧瞧: 这里给初学Python的朋友提供一些建议和指导吧.大神请无视, 俗话说:授人以鱼不如授人以渔.所以我这里只是阐述学习过程,并不会直接详细 ...

  2. python入门指南pdf-跟老齐学Python+从入门到精通 PDF 下载

    相关截图: 资料简介: 本书是面向编程零基础读者的Python入门教程,内容涵盖了Python的基础知识和初步应用.以比较轻快的风格,向零基础的学习者介绍一门时下比较流行.并且用途比较广泛的编程语言, ...

  3. python基础教程书籍推荐-初学者python入门必看书籍推荐(上)

    随着最近Python的热度上涨,学习的人数也在增多,也因为Python这门语言的简短.易学.语言优美的优点,吸引了很多人来学习它.初学者想要入门,就必须先通过阅读,学习大量的理论知识对Python有一 ...

  4. python快速编程入门黑马-新手如何快速入门Python编程?/开发python入门教程

    Python从入门到实践的教程是什么? 第一阶段Python与Linux数据这是Python的入段,也是帮助零基础学员打好基础的重要阶段,让零基础学员可以具备基础的编程能力,并掌握MySQL进阶内容. ...

  5. python入门教程非常详细-python初学者怎么入门:python入门教程非常详细

    python安装后如何打开 ,先找到python安装位置. python学习网,大量的免费python入门教程,在线学习! 进装目录之后,点击Lib文件夹. 相关推荐:<Python教程> ...

  6. Python入门篇-高级数据类型集合(set)和字典(dict)

    Python入门篇-高级数据类型集合(set)和字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.集合(set) 1>.集合的特点 约定set 翻译为集合c ...

  7. python入门之控制结构-循环结构_Python 入门之控制结构 - 循环结构(一)

    第1关:While 循环与 break 语句 程序的第三大结构是循环结构.在此结构中,通过一个判断语句来循环执行一个代码块,直到判断语句为假时跳出循环.循环语句分为while循环.for循环.循环嵌套 ...

  8. python入门题目及答案_Python基础自测题答案和基础知识梳理

    Python基础自测题答案和基础知识梳理 1.关于Python中的lambda表达式的函数体自能是单独一条语句,所以答案选择C. 例如:>>>g = lambda x: 2*x+1 ...

  9. Python入门 推导式 ! 解释:生成器表达式和列表推导式的区别

    Python 入门之 推导式 学习python中有什么不懂的地方,小编这里推荐加小编的python学习群:895,817, 687 有任何不懂的都可以在里面交流,还有很好的视频教程pdf学习资料,大家 ...

最新文章

  1. opencv学习笔记(六)---图像梯度
  2. 光速AStar寻路算法(C++)
  3. mysql iostat_通过『iostat -dx 1』命令监控IO性能
  4. c#Clay开源的动态语言dynamic框架,让您形如javascript的方式创建对象!
  5. 记一次 React 组件无法更新状态值的问题分析与解决
  6. python花式输出_关于python字符串format的一些花式用法
  7. 30问提升技术人写作力-第1问作业
  8. Spring_Hibernate
  9. Java必知必会之socket
  10. atitit. 研发管理---如何根据自己的特挑选 产业、行业、职业、岗位与自己发展的关系
  11. 进销存软件排行榜前十名!
  12. JVisualVM的使用教程
  13. android 开机优化,android5.0在开机优化应用的时候,怎么关闭优化强制启动
  14. linux系统声卡安装教程,Linux操作系统声卡驱动的安装与配置
  15. 采用腾讯云直播断流续播相关问题
  16. Windows XP SP3截至2011年4月更新补丁汇总(WinXP补丁包) 修正版
  17. 【阅读笔记】Cost Volume Pyramid Based Depth Inference for Multi-View Stereo
  18. Fedora 9.0 官方下载
  19. A brief introduction to complex analysis
  20. [论文翻译]Sparse R-CNN: End-to-End Object Detection with Learnable Proposals

热门文章

  1. vue 下echarts卸载和安装指定版本
  2. python 遍历目录或文件
  3. 「 每日一练,快乐水题 」744. 寻找比目标字母大的最小字母
  4. 「 每日一练,快乐水题 」682. 棒球比赛
  5. redis集群搭建(基于docker)
  6. Spring Cloud GatewayAPI网关服务
  7. git新建项目并push进去
  8. UNIX再学习 -- 可重入函数和 SIGCHLD 语义
  9. 记录一次socket编程:String的trim函数
  10. 汇编语言布尔表达式(NOT、AND、OR)