python中的生成器

1.简介

在Python中,生成器是一种边循环边计算的惰性机制,需要我们手动去提取这些元素。

2.示例

(表达式   循环体   条件语句)

注:列表生成式的[]改成(),就创建了一个generator.

1 >>> L1=[1, 2, 3, 4, 5, 6]
2 >>> g=(x*x for x in L1)
3 >>> g
4 <generator object <genexpr> at 0x0268E968>
5 >>> next(g)  #也可以使用g.next()
6 1
7 >>> next(g)
8 4

也可以直接使用循环(避免抛出错误): 

1 >>> for n in g:
2       print(n)

3.函数生成器

斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到:

1, 1, 2, 3, 5, 8, 13, 21, 34, ...

函数:

1 def fib(max):
2     n, a, b = 0, 0, 1
3     while n < max:
4         print b
5         a, b = b, a + b
6         n = n + 1

计算结果:

1 >>> fib(4)
2 1
3 1
4 2
5 3

如何将上述函数编程生成器呢?方法如下:把print b改为yield b。

函数:

1 def fib(max):
2      n, a, b = 0, 0, 1
3      while n < max:
4          yield b
5          a, b = b, a + b
6          n = n + 1

计算结果:

 1 >>> f = fib(6)
 2 >>> f
 3 <generator object fib at 0x104feaaa0>
 4 >>> for n in fib(6):
 5 ... print(n)
 6 1
 7 1
 8 2
 9 3
10 5
11 8
原文地址:https://www.cnblogs.com/jfl-xx/p/7120206.html