1. 程式人生 > >python學習筆記——生成器(generator)

python學習筆記——生成器(generator)

列表生成式可以簡潔的建立一個list,生成器可以建立一個演算法,通過迭代生成需要的元素

建立方法有兩種:

1.將列表生成式中[]換成()

>>> g = (x*x for x in range(11))
>>> g
<generator object <genexpr> at 0x10ac5d5c8>

>>> for i in g:
...     print(i)
... 
0
1
4
9
16
25
36
49
64
81
100
2. yield

函式中如果出現了yield,就表明這是一個generator

>>> def fib(max):
...     n,a,b = 0,0,1
...     while n<max:
...             yield b
...             a,b = b,a+b
...             n += 1
...     return 'done'
... 
>>> f = fib(6)
>>> f
<generator object fib at 0x10ac5d4c0>
generator的優點是記憶體佔用少,可根據需要提取元素