例如以下程式可產生 2 到 n-1 之間的整數
def fun(n): for i in range(2, n): yield i for j in fun(7): print(j) # 《程式語言教學誌》的範例程式 # http://pydoing.blogspot.com/ # 檔名:gen01.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月
執行結果如下
第 5 行利用 j 取得產生器函數 fun() 所產生的數字,然後在第 6 行呼叫 print() 印出。
以下程式可將字串 (string) 倒過來印出
def reverse(data): for i in range(len(data) - 1, -1, -1): yield data[i] for i in reverse("wonderful"): print(i * 33) # 《程式語言教學誌》的範例程式 # http://pydoing.blogspot.com/ # 檔名:gen02.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月
執行結果如下
這是利用 range() 建立一個串列 (list) ,該串列中依序儲存字串的最大索引值到最小索引值,然後用 yield 產生字元,直到倒序讀完字串。
以下程式將英文單字中母音字母以 1 替換,非母音字母以 0 替換,產生的 01 序列儲存在串列中
def t(data): for i in data: if i in "aeiou": yield 1 if i not in "aeiou": yield 0 s = "perpetual" d = [] for i in t(s): d.append(i) print(d) print() # 《程式語言教學誌》的範例程式 # http://pydoing.blogspot.com/ # 檔名:gen03.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月
執行結果如下
第 12 行
d.append(i)
這是利用串列的 append() 方法 (method) ,可附加任意物件 (object) 到串列裡頭,排在所有元素 (element) 的最後。
中英文術語對照 | |
---|---|
函數 | function |
數值 | value |
關鍵字 | keyword |
產生器函數 | generator function |
串列 | list |
方法 | method |
物件 | object |
元素 | element |
參考資料
http://docs.python.org/py3k/tutorial/classes.html
http://docs.python.org/py3k/reference/simple_stmts.html
http://docs.python.org/py3k/tutorial/classes.html
http://docs.python.org/py3k/reference/simple_stmts.html
2 則留言:
第1個範例應該是產生2(含)到7(不含)之間的整數
這部份打錯了,已修改,感謝指正 :)
張貼留言