python面向对象:迭代器

本文深入解析Python迭代器的工作原理,涵盖无限序列生成、有限序列扩展、数据获取及对象迭代性判断。通过实例演示,掌握iter()函数、无限序列如count()和无限循环如cycle(),以及如何利用isinstance()检查对象的可迭代性。
摘要由CSDN通过智能技术生成

迭代器

一、迭代器的概念

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

二、迭代器的使用方法

1.生成迭代器

在Python中,提供了 iter()方法,会返回一个迭代器;itertools模块函数返回的都是迭代对象。

(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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值