python迭代器_Python 迭代器(Iterator)

版权所有,未经许可,禁止转载

Python 迭代器(Iterator)

迭代器是一个包含有限数量值的对象。

迭代器是一个可以被迭代的对象,可以遍历迭代器中的所有值。

从技术上讲,在Python中,迭代器是实现迭代器协议的对象,该协议由方法__iter__()和__next__()组成。

可迭代的数据类型

列表、元组、字典和集合都是可迭代的对象,可以从其中获得迭代器。

所有这些对象都可用iter()方法获取迭代器:

示例

从元组中获取一个迭代器,遍历并打印每个值:

mytuple = ("自行车", "汽车", "高铁")

myit = iter(mytuple)

print(next(myit))

print(next(myit))

print(next(myit))

字符串也是可迭代对象,可以从中获取迭代器:

示例

使用迭代器遍历字符串:

mystr = "自行车"

myit = iter(mystr)

print(next(myit))

print(next(myit))

print(next(myit))

for循环迭代

我们也可以使用for循环来遍历一个迭代器:

示例

迭代元组的值:

mytuple = ("自行车", "汽车", "高铁")

for x in mytuple:

print(x)

示例

迭代字符串的字符:

mystr = "自行车"

for x in mystr:

print(x)

for循环内部实际上进行了迭代器的获取,及next()方法的调用。

创建迭代器

一个对象要创建迭代器,变成可迭代的,必须实现方法:__iter__()和__next__()。

__iter__()方法必须始终返回迭代器对象本身。

__next__()方法必须返回序列中的下一项。

示例

创建一个返回数字的迭代器,从1开始,每个序列项递增1(返回1、2、3、4、5等):

class MyNumbers:

def __iter__(self):

self.a = 1

return self

def __next__(self):

x = self.a

self.a += 1

return x

myclass = MyNumbers()

myiter = iter(myclass)

print(next(myiter))

print(next(myiter))

print(next(myiter))

print(next(myiter))

print(next(myiter))

StopIteration

上面示例next()调用将永远继续,我们可以使用StopIteration语句停止迭代。

在__next__()方法中,我们可以根据迭代次数添加终止条件来引发错误:

示例

迭代20次后停止:

class MyNumbers:

def __iter__(self):

self.a = 1

return self

def __next__(self):

if self.a <= 20:

x = self.a

self.a += 1

return x

else:

raise StopIteration

myclass = MyNumbers()

myiter = iter(myclass)

for x in myiter:

print(x)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值