您的位置:首页 > 编程语言 > Python开发

python之迭代器和生成器

2015-05-26 11:03 363 查看
迭代器

根本上说, 迭代器就是有一个 next() 方法的对象

迭代器可用内建的iter方法创建

>>> i = iter('abc')
>>> i.next()
'a'
>>> i.next()
'b'
>>> i.next()
'c'


对类可用__iter__和next()创建迭代器

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();
return self.a # 返回下一个值

for n in Fib():
print n

-------------------------------
1
1
2
3
5
...
46368
75025


生成器

生成器是可以迭代的,但是只可以读取它一次

>>> g = (x*x for x in range(3))
>>> for i in gt :
...    print(i)
0
1
4
>>> for i in g :
...    print(i)


yield

#当你调用这个函数的时候,函数内部的代码并不立马执行, 这个函数只是返回一个生成器对象
def createGenerator():
mylist = range(3)
for i in mylist:
yield i*i

>>> for i in mygenerator:
print i
0
1
4
>>> for i in mygenerator:  #也是只可调用一次
print i


2015-05-26
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: