迭代器

学习目标

1、掌握Iterable和Iterator的使用和区别。

Iterable和Iterator

可以直接作用于for循环的对象称为可迭代对象:Iterable。可迭代对象有一种是集合数据类型,如list、tuple、dict、set、str等,还有一种是generator,比如生成器和带yield的generator function。可以使用isinstance()函数判断对象是否是Iterable对象:

>>> from collections.abc import Iterable

>>> isinstance([], Iterable)    #list

True

>>> isinstance({}, Iterable)    #set

True

>>> isinstance((1,2), Iterable)    #dict

True

>>> isinstance('abc', Iterable)    #str

True

>>> isinstance((x for x in range(10)), Iterable)    #generator

True

>>> isinstance(100, Iterable)    #int不是可迭代对象

False

可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。生成器都是Iterator。可以使用isinstance()函数判断一个对象是否Iterator对象:

>>> from collections.abc import Iterator

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

True

>>> isinstance([], Iterator)

False

>>> isinstance({}, Iterator)

False

>>> isinstance('abc', Iterator)

False

把list、str等Iterable变成Iterator可以使用iter()函数:

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

True

>>> isinstance(iter('abc'), Iterator)

True

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 可直接作用于for循环的对象我们称之为可迭代对象Iterable: 一类是数据集合类型:list、tuple、di...
    木人张阅读 133评论 0赞 1
  • 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list、tuple、dict...
    小猿圈IT教育阅读 92评论 0赞 0
  • 直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list、tuple、dict、set、str等...
    json_jie阅读 257评论 0赞 0
  • 一、可迭代对象和迭代器 1.迭代的概念 上一次输出的结果为下一次输入的初始值,重复的过程称为迭代,每次重复即一次迭...
    chen_000阅读 413评论 0赞 1
  •   在学习python数据结构的过程中,可迭代对象,迭代器,生成器这些概念参杂在一起,难免让初学者一头雾水,今天就...
    liangruifeng阅读 369评论 0赞 2

友情链接更多精彩内容