ジェネレーター関数を作成する
これまでの演習では、主にジェネレーター式(内包表記の構文を使うもの)を記述してきました。内包表記の構文を使うことで、ジェネレーター式の作成がとても簡単になりましたね。
ここで、動画の内容を思い出しましょう。ジェネレーター式だけでなく、ジェネレーター関数 も存在します。ジェネレーター関数は、ジェネレーター式と同様に、単一の値を返す代わりに一連の値を順に生成する関数です。通常の関数と同じように定義しますが、値を生成するときには yield の代わりにキーワード return を使う点が異なります。
この演習では、前の演習で定義した次のジェネレーター式と同様の仕組みを持つジェネレーター関数を作成します。
lengths = (len(person) for person in lannister)
この演習はコースの一部です
Python Toolbox
演習の手順
- 単一のパラメーター
get_lengths()を持つ関数input_listの関数ヘッダーを完成させてください。 - 関数定義内の
forループで、yieldに含まれる各文字列の長さをinput_listしてください。 forジェネレーター関数が生成する値を出力するget_lengths()ループのイテラブル部分を完成させてください。リストget_lengths()を引数としてlannisterを呼び出し、その結果を指定します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create a list of strings
lannister = ['cersei', 'jaime', 'tywin', 'tyrion', 'joffrey']
# Define generator function get_lengths
def ____:
"""Generator function that yields the
length of the strings in input_list."""
# Yield the length of a string
for person in input_list:
____
# Print the values generated by get_lengths()
for value in ____:
print(value)