赞
踩
转载自 http://blog.csdn.net/bluebird_237/article/details/38894617
迭代器就是重复地做一些事情,可以简单的理解为循环,在python中实现了__iter__方法的对象是可迭代的,实现了next()方法的对象是迭代器,这样说起来有点拗口,实际上要想让一个迭代器工作,至少要实现__iter__方法和next方法。很多时候使用迭代器完成的工作使用列表也可以完成,但是如果有很多值列表就会占用太多的内存,而且使用迭代器也让我们的程序更加通用、优雅、pythonic。
如果一个类想被用于for ... in
循环,类似list或tuple那样,就必须实现一个__iter__()
方法,该方法返回一个迭代对象,然后,Python的for循环就会不断调用该迭代对象的next()
方法拿到循环的下一个值,直到遇到StopIteration错误时退出循环。
我们以斐波那契数列为例,写一个Fib类,可以作用于for循环:
- class Fib(object):
- def __init__(self):
- self.a, self.b = 0, 1 # 初始化两个计数器a,b
-
- def __iter__(self):
- return self # 实例本身就是迭代对象,故返回自己
-
- def next(self):
- self.a, self.b = self.b, self.a + self.b # 计算下一个值
- if self.a > 100000: # 退出循环的条件
- raise StopIteration();
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。