Python的 itertools模块

在复习Python基本语法的时候,看到了迭代器模块,做一个简单的笔记。

Iterable:

所谓可迭代数据流,即能直接参与for循环的数据类型:Iterable
一类是集合数据类型,如list / tuple / dict / set / str /等;
一类是generator,包括生成器和带yield的generator function。
关于带yield的函数可以参考廖老师的教程https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/
另外,生成器本身的next()函数也可以持续返回下一个值

Iterator:

迭代器,可以被next()函数调用并不断返回下一个值的对象称为迭代器。
所以,list / tuple / dict / set / str 之流是无法成为迭代器的,因为的Iterator对象表示的是一个不限大小的数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误。可以把这个数据流看作是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。
集合数据类型如 list / dict / str / 等是Iterable可迭代对象但不是Iterator迭代器,不过可以通过iter()函数可以获得一个Iterator对象。

最后,帮助文档在这里https://docs.python.org/2/library/itertools.html#itertools.count

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • PYTHON-进阶-ITERTOOLS模块小结转自wklken:http://wklken.me/posts/20...
    C_Y_阅读 4,702评论 0 2
  • Python 是一种相当高级的语言,通过 Python 解释器把符合语法的程序代码转换成 CPU 能够执行的机器码...
    Python程序媛阅读 5,934评论 0 3
  • 1.1==,is的使用 ·is是比较两个引用是否指向了同一个对象(引用比较)。 ·==是比较两个对象是否相等。 1...
    TENG书阅读 4,037评论 0 0
  • 亲爱的女儿: 一周一周过的真快啊!又到了妈妈要交作业的时间了。每每想着多写点,比如每周给你写一封信,另外...
    陈虹_dd45阅读 786评论 1 1
  • 第十五章 被发现了 遇见一个想要陪伴的人,便会有勇气去奋不顾身。在这样抵制早恋的高中时期,躲过班主任的目光,...
    书小璇阅读 1,618评论 0 0