Python基礎(12):生成器 & reduce
一、生成器
在 Python 中,使用了 yield 的函式被稱為生成器(generator)。
跟普通函式不同的是,生成器是一個返回迭代器的函式,只能用於迭代操作,更簡單點理解生成器就是一個迭代器。
在呼叫生成器執行的過程中,每次遇到 yield 時函式會暫停並儲存當前所有的執行資訊,返回yield的值。並在下一次執行 next()方法時從當前位置繼續執行。
import sys def fibonacci(n): # 生成器函式 - 斐波那契 a, b, counter = 0, 1, 0 while True: if (counter > n): return yield a a, b = b, a + b counter += 1 f = fibonacci(10) # f 是一個迭代器,由生成器返回生成 while True: try: print(next(f), end=" ") except StopIteration: sys.exit() 執行以上程式,輸出結果如下: 0 1 1 2 3 5 8 13 21 34 55
二、reduce
python中的reduce內建函式是一個二元操作函式,他用來將一個資料集合(連結串列,元組等)中的所有資料進行下列操作:用傳給reduce中的函式 func()(必須是一個二元操作函式)先對集合中的第1,2個資料進行操作,得到的結果再與第三個資料用func()函式運算,最後得到一個結果。
如:
def myadd(x,y): return x+y sum=reduce(myadd,(1,2,3,4,5,6,7)) print sum #結果就是輸出1+2+3+4+5+6+7的結果即28 當然,也可以用lambda的方法,更為簡單: sum=reduce(lambda x,y:x+y,(1,2,3,4,5,6,7)) print sum
在python 3.0.0.0以後, reduce已經不在built-in function裡了, 要用它就得from functools import reduce.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490526/viewspace-2637149/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python基礎12Python
- Python基礎(四)——迭代器/物件,生成器Python物件
- 【Python培訓基礎知識】Python生成器函式Python函式
- python基礎(補充):python三大器之生成器Python
- 『無為則無心』Python基礎 — 63、Python中的生成器Python
- python基礎學習12—-裝飾器Python
- Python程式設計基礎Task12Python程式設計
- Python基礎12(模組與datetime模組)Python
- python3基礎 之 迭代器與生成器,生成式Python
- Python基礎篇-Python基礎01Python
- PHP 核心特性 - 生成器基礎篇PHP
- 【ES6基礎】生成器(Generator)
- Go基礎系列:惰性數值生成器Go
- Python基礎筆記01-Python基礎Python筆記
- 『無為則無心』Python基礎 — 12、Python運算子詳細介紹Python
- python基礎中的基礎Python
- 【深度學習基礎-12】多元迴歸分析基礎及進階-python程式碼實現深度學習Python
- Python 基礎 (-)Python
- Python基礎Python
- python 基礎Python
- Python基礎:語法基礎(3)Python
- Pandas 基礎 (12) - Stack 和 Unstack
- 12 物件導向基礎-1物件
- Python基礎面試題30問!Python基礎教程Python面試題
- Python基礎—字串Python字串
- Python_基礎Python
- Python基礎一Python
- Python基礎篇Python
- 03 - Python 基礎Python
- python基礎題Python
- python基礎3Python
- Python列表基礎Python
- 【Python基礎】字典Python
- python基礎概念Python
- python基礎操作Python
- python基礎(五)Python
- python基礎(一)Python
- Python基礎教程Python