美文网首页
Python 迭代器

Python 迭代器

作者: 随心随缘不随便 | 来源:发表于2018-01-22 18:33 被阅读2次

迭代器是访问集合元素的一种方式
迭代器是一个可以记住遍历的位置的对象
迭代器对象从集合的第一个元素开始访问,直到所有元素被访问完结束
迭代器只能向前,不能后退

1.接作用于 for 循环的数据类型有以下几种:

  • 一类是结合数据类型,如list、 tuple、 dictsetstr
  • 一类是 generator, 包括生成器和带 yiedgenerator function

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

2.判断是否可以迭代
可以使用 isinstance() 判断一个对象是否是 iterable 对象:

In [10]: from collections import Iterable

In [12]: isinstance('asd', Iterable)
Out[12]: True

In [13]: isinstance([], Iterable)
Out[13]: True

In [14]: isinstance({}, Iterable)
Out[14]: True

In [16]: isinstance((x for x in range(10)), Iterable)
Out[16]: True

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

In [4]: from collections import Iterator

In [5]: isinstance((x for x in range(10)), Iterator)
Out[5]: True

In [6]: isinstance([],Iterator)
Out[6]: False

In [7]: isinstance({}, Iterator)
Out[7]: False

In [8]: isinstance('sfhj', Iterator)
Out[8]: False

In [9]: isinstance(345, Iterator)
Out[9]: False

In [10]: 

4.Iter() 函数
生成器都是 Iterator 对象,但 listdictstr 虽然是 Interable, 却不是 Iterator
listdictstrIterable 变成Iterator 可以使用 inter()函数:

In [17]: from collections import Iterator

In [18]: isinstance(iter([]), Iterator)
Out[18]: True

In [19]: isinstance(iter({}), Iterator)
Out[19]: True

In [21]: isinstance(iter('fsd'), Iterator)
Out[21]: True

总结

  • 凡是可作用于 for 循环的对象都是 Iterable 类型
  • 凡是可作用于 next() 函数的对象都是 Iterator 类型
  • 集合数据类型如 listdictstrIterable 但不是 Iterator, 不过可以通过 iter() 函数获得一个 Iterator 对象

相关文章

网友评论

      本文标题:Python 迭代器

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