Python迭代器Iterator

☆首页☆ 论坛 Python学习记录 Python迭代器Iterator

标签: 

正在查看 1 帖子:1-1 (共 1 个帖子)
  • 作者
    帖子
  • #2523
    羊毛客
    管理员

    1.可以直接作用于for循环的数据类型有以下几种:
    一类是集合数据类型,如list、tuple、dict、set、str等;
    一类是generator,包括生成器和带yield的generator function。

    这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。
    可以使用isinstance()判断一个对象是否是可迭代Iterable对象:
    >>> isinstance(‘abc’, Iterable)
    True

    2.而生成器不仅可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出StopIteration错误表示无法继续返回下一个值了。
    可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。

    可以使用isinstance()判断一个对象是否是迭代器Iterator对象:
    >>> isinstance(‘abc’, Iterator)
    False

    3.生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。
    把list、dict、str等Iterable变成Iterator可以使用iter()函数:

    >>> isinstance(iter([]), Iterator)
    True
    >>> isinstance(iter(‘abc’), Iterator)
    True

    总结:
    凡是可作用于for循环的对象都是Iterable类型;
    凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列。

正在查看 1 帖子:1-1 (共 1 个帖子)
  • 哎呀,回复话题必需登录。