28章データストリーム――ジェネレータlazy Rivers
制約
- データは、全体ではなく、必要な分だけ利用できる。
- 関数は、データの流れの間に位置するフィルタまたは変換器である。
- データは必要に応じて上流から下流へ渡され、処理される。
プログラム
1 #!/usr/bin/env python 2 import sys, operator, string 3 4 def characters(filename): 5 for line in open(filename): 6 for c in line: 7 yield c 8 9 def all_words(filename): 10 start_char = True 11 for c in characters(filename): 12 if start_char == True: 13 word = "" 14 if c.isalnum(): 15 # 単語の先頭を発見 16 word = c.lower() 17 start_char = False 18 else: pass 19 else: 20 if c.isalnum(): 21 word += c.lower() 22 else: 23 # 単語の末尾を発見したので送出する 24 start_char = True 25 yield word 26 27 def non_stop_words(filename): 28 stopwords ...
Get プログラミング文体練習 ―Pythonで学ぶ40のプログラミングスタイル now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.