码迷,mamicode.com
首页 > 编程语言 > 详细

python之迭代器和生成器

时间:2015-05-26 12:37:08      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

迭代器

根本上说, 迭代器就是有一个 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

python之迭代器和生成器

标签:

原文地址:http://www.cnblogs.com/whuyt/p/4530087.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!