Python 学习日知录(八)- 迭代器初步
1. 迭代器和可迭代对象
for
语句作用于序列,比如列表(list)和元组(tuple)。其实任何实现了 __iter__
方法的对象都可用于for
循环中,Python中称这些对象为可迭代的(Iterable)。
__iter__
方法返回对象的一个迭代器(Iterator),而实现了next
方法的对象都可以叫做迭代器。
迭代器的优点是用到才计算,不会占用很多内存空间。而list会在内存中保存整个列表。无限长的序列也适合用迭代器实现。
2. 程序示例
下面用迭代器构造一个斐波那契数组:
# -*- coding:utf8 -*-
class Fibs(object):
def __init__(self):
self.a = 0
self.b = 1
def next(self): # 实现next方法,迭代器
self.a, self.b = self.b, self.a + self.b
return self.a
def __iter__(self): # 返回迭代器,可迭代对象
return self
fibs = Fibs() # 产生一个可迭代对象
for i in range(10): # 执行迭代
print fibs.next()
执行结果:
1
1
2
3
5
8
13
21
34
55