版权全部,未经许可,禁止转载python
迭代器是一个包含有限数量值的对象。正则表达式
迭代器是一个能够被迭代的对象,能够遍历迭代器中的全部值。函数
从技术上讲,在Python中,迭代器是实现迭代器协议的对象,该协议由方法__iter__()
和__next__()
组成。code
列表、元组、字典和集合都是可迭代的对象,能够从其中得到迭代器。对象
全部这些对象均可用iter()
方法获取迭代器:继承
示例开发
从元组中获取一个迭代器,遍历并打印每一个值:字符串
mytuple = ("自行车", "汽车", "高铁") myit = iter(mytuple) print(next(myit)) print(next(myit)) print(next(myit))
字符串也是可迭代对象,能够从中获取迭代器:get
示例it
使用迭代器遍历字符串:
mystr = "自行车" myit = iter(mystr) print(next(myit)) print(next(myit)) print(next(myit))
咱们也能够使用for循环来遍历一个迭代器:
示例
迭代元组的值:
mytuple = ("自行车", "汽车", "高铁") for x in mytuple: print(x)
示例
迭代字符串的字符:
mystr = "自行车" for x in mystr: print(x)
for
循环内部实际上进行了迭代器的获取,及next()
方法的调用。
一个对象要建立迭代器,变成可迭代的,必须实现方法:__iter__()
和__next__()
。
__iter__()
方法必须始终返回迭代器对象自己。
__next__()
方法必须返回序列中的下一项。
示例
建立一个返回数字的迭代器,从1开始,每一个序列项递增1(返回一、二、三、四、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))
上面示例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)