1. 程式人生 > >學習python第十二天,函式4 生成器

學習python第十二天,函式4 生成器

在Python中,這種一邊迴圈一邊計算的機制,稱為生成器:generator

要建立一個generator,有很多種方法。第一種方法很簡單,只要把一個列表生成式的[]改成(),就建立了一個generator:

>>> L = [x * x for x in range(10)]
>>> L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> g = (x * x for x in range(10))
>>> g
<generator object <genexpr> at 0x1022ef630>

建立Lg的區別僅在於最外層的[]()L是一個list,而g是一個generator。

我們可以直接打印出list的每一個元素,但我們怎麼打印出generator的每一個元素呢?

如果要一個一個打印出來,可以通過next()函式獲得generator的下一個返回值:

當然,上面這種不斷呼叫next(g)實在是太麻煩了,正確的方法是使用for迴圈,因為generator也是可迭代物件:

>>> g = (x * x for x in range(10))
>>> for n in g:
...     print(n)