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

python 生成器

时间:2017-10-11 20:24:56      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:列表   end   print   logs   ext   div   break   []   数列   

什么是生成器

如果一个函数里面使用了yeild关键字,那么,这个函数就是一个生成器。

生成器是一种推导逻辑,调用生成器返回迭代器。

生成器的创建方法

  1. 改列表推导式[]为()
  2. 使用带有yeild关键字的函数
# 改列表推导式[]为()
 
l = [2*x for x in range(3)]
print(l) # [0, 2, 4]
 
g = (2*x for x in range(3))
print(next(g)) # 0
print(next(g)) # 2
print(next(g)) # 4
 
print(next(g)) # StopIteration异常
 
使用带有yeild关键字的函数
 
def f():
    print(‘step 1‘)
    yield 1
    print(‘step 2‘)
    yield 2
    print(‘step 3‘)
    yield 3
 
g = f()
print(next(g)) # step 1 1
print(next(g)) # step 2 2
print(next(g)) # step 3 3
print(next(g)) # StopIteration 异常

斐波那契数列,除了前两项,后面的一项是前面两项的和

def fib(n):
    a, b, counter = 0, 1, 0
    while True:
        if counter > n:
            break
        a, b = b, a + b
        # print(a, end=‘ ‘)
        yield a
        counter += 1
 
g = fib(10)
 
for x in g:
    print(x,end=‘ ‘)
# 1 1 2 3 5 8 13 21 34 55 89

  

python 生成器

标签:列表   end   print   logs   ext   div   break   []   数列   

原文地址:http://www.cnblogs.com/lcgsmile/p/7652130.html

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