始める無料で始める

ジェネレーター関数を作成する

これまでの演習では、主にジェネレーター式(内包表記の構文を使うもの)を記述してきました。内包表記の構文を使うことで、ジェネレーター式の作成がとても簡単になりましたね。

ここで、動画の内容を思い出しましょう。ジェネレーター式だけでなく、ジェネレーター関数 も存在します。ジェネレーター関数は、ジェネレーター式と同様に、単一の値を返す代わりに一連の値を順に生成する関数です。通常の関数と同じように定義しますが、値を生成するときには 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)
コードを編集して実行