0
点赞
收藏
分享

微信扫一扫

python面向对象:迭代器

贵州谢高低 2022-04-13 阅读 48
python

文章目录

迭代器

一、迭代器的概念

  • 1)迭代器是一个带状态的对象,任何实现了 iternext__方法的对象都是迭代器(python2:任何实现next()方法的对象都是迭代器)。
  • 2)其中iter返回迭代器本身, next 返回容器中的下一个值。 如果容器中没有更多元素了,则抛出Stopiteration异常。 因此,可以把迭代器理解成一个带有流水线的工程,我们每次询问他时,他就给我们返回下一个值。 迭代器会把所有的值都存储在内存中。 next()函数 用来返回文件的下一行/下一个值,直到促发STopIteration。
  • 用处:把可迭代对象变为迭代器。 凡是可以返回一个迭代器的对象都可以称之为可迭代对象(除了上面提到的list,tuples,dict等容器外,还有很多其他对象也是可迭代对象。

二、迭代器的使用方法

1.生成迭代器

(1)生成无限序列

在这里插入图片描述

  • 代码
from itertools import count

counter = count(start=9)
print(next(counter))  # 输出结果为9
print(next(counter))  # 输出结果为10

(2)从一个有限序列中生成无限序列

在这里插入图片描述

  • 代码
from itertools import cycle

colors = cycle(['red', 'yellow', 'blue'])
print(next(colors))  #输出结果‘red'
print(next(colors))  #输出结果‘yellow'
print(next(colors))  #输出结果‘blue'
print(next(colors))  #输出结果‘red'

(3)从无限序列中生成有限序列

在这里插入图片描述

from itertools import cycle, islice

colors = cycle(['red', 'yellow', 'blue'])
limited = islice(colors, 0, 4)
for x in limited:
    print(x)

2. 取出迭代器的数据

  • 在迭代器中会定义一个叫做__next__方法,它提供获取数据的接口;在Python中,提供了next()内置函数,专门调用迭代器的__next__方法,一旦没有数据后,再次访问时,会抛出StopIteration的异常。

3. 如何判断一个对象是否可以迭代

  • 可以使用isinstance()判断一个对象是否属于Iterable类。
    在这里插入图片描述
举报

相关推荐

0 条评论