美文网首页
迭代器(第21篇)

迭代器(第21篇)

作者: 你好星期四 | 来源:发表于2016-04-12 21:59 被阅读10次

我们前面说过Iterable,所有的集合数据类型(比如list,tuple,dict,set,str等)都是Iterable对象,包括上一篇说到的generator,也是Iterable。他们有一个共同的特点,那就是都可以用for循环进行迭代。你可以使用isinstance()函数判断一个对象是不是Iterable对象:


>>> from collections import Iterable

>>> isinstance([], Iterable)

True

>>> isinstance({},Iterable)

True

而我们这一篇要讲的迭代器(Iterator),不但可以跟Iterable对象一样可以使用for循环迭代,还可以不断调用next()函数返回下一个值。我们上一篇说的generator就是迭代器(Iterator)。而list,tuple,dict,set都不能通过不断调用next()返回下一个值,所以它们不是Iterator。

生成器不仅是Iterable对象,还是Iterator对象。

你可以使用isinstance()来判断一个对象是不是Iterator对象:


>>> from collections import Iterator

>>> isinstance((x for x in range(10), Iterator )

True

>>> isinstance([],Iterator)

False

虽然list,dict,tuple等Iterable对象不是Iterator,但你可以通过iter()函数把它们变成Iterator对象:


>>> isinstance(iter([]),Iterator)

True

Iterator对象是一个惰性序列。惰性序列是指它并没有一下子就把它所有的元素列出来,因此它不知道自己有多少元素,只有当它不断next()的时候,它才会去计算下一个值是多少——所以它比较懒惰。

Iterator的好处是它不用一下子就列出所有的元素,那样会占用内存空间,所以它可以表示无限的概念。一个Iterator对象可以表示所有的自然数,但是用一个list就办不到,因为内存有限。

相关文章

  • 第7章迭代器模式

    第7章迭代器模式 7.1 jQuery中的迭代器 7.2 实现自己的迭代器 7.3 内部迭代和外部迭代 1内部迭代...

  • 迭代器

    本节实验我们将为大家讲解迭代器,主要介绍 5 种常见迭代器:输入、输出迭代器,前向逆向迭代器,双向迭代器和随机迭代...

  • python cookbook学习笔记(1)

    python cookbook学习笔记连载中回调会第4章查看迭代器的用法 反向迭代迭代函数reversed() 4...

  • 迭代器与生成器

    迭代(iteration)与可迭代(iterable) 迭代器 迭代器协议(iterator protocol) ...

  • 10.迭代器与生成器

    一、迭代器 1). 迭代器概述 类比Java中的迭代器,参考迭代器模式https://www.jianshu.co...

  • 9 ES6 迭代器、生成器

    1、Iterator迭代器 ->遵循迭代模式思想实现,分为内部迭代器、外部迭代器,聚焦点:添加迭代接口 (1).迭...

  • C++boolan part3_week4

    1. 迭代器 1.1 迭代器的种类 使用随机访问迭代器的容器:array, vector,deque使用双向迭代器...

  • 迭代器模式

    内部迭代器和外部迭代器 简单地讲,内部迭代器就是类似 forEach 的迭代器,其内部迭代逻辑已经制定好,只要传入...

  • vector erase的用法

    正向迭代器: 反向迭代器:

  • 10 python中的迭代器和生成器

    1 迭代器 遵循了迭代器协议的对象为迭代器,即内部调用iter()方法转化成的对象为成迭代器。 1.1 迭代器的特...

网友评论

      本文标题:迭代器(第21篇)

      本文链接:https://www.haomeiwen.com/subject/ygswlttx.html