Python でイテレータを使ったリストの作成

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

Pythonでは、さまざまな方法でリストを作成できます。そのような方法の1つは、イテレータ関数と初期のシード値を使用することです。このチャレンジでは、イテレータ関数と初期のシード値を使用してリストを作成することが求められます。

リストを展開する

あなたの課題は、イテレータ関数と初期のシード値を引数として受け取る unfold 関数を実装することです。イテレータ関数は1つの引数 (seed) を受け取り、常に2つの要素を持つリスト ([value, nextSeed]) または終了するための False を返す必要があります。unfold 関数は、while ループを使用してイテレータ関数を呼び出し、False が返されるまで valueyield するジェネレータ関数 fn_generator を使用する必要があります。最後に、unfold 関数は、イテレータ関数を使用してジェネレータによって生成されるリストを返すためにリスト内包表記を使用する必要があります。

unfold 関数を実装します:

def unfold(fn, seed):
    ## ここにコードを記述してください

入力

  • 1つの引数 (seed) を受け取り、常に2つの要素を持つリスト ([value, nextSeed]) または終了するための False を返すイテレータ関数 fn
  • 初期のシード値 seed

出力

  • イテレータ関数を使用してジェネレータによって生成されるリスト。
def unfold(fn, seed):
  def fn_generator(val):
    while True:
      val = fn(val[1])
      if val == False: break
      yield val[0]
  return [i for i in fn_generator([None, seed])]
f = lambda n: False if n > 50 else [-n, n + 10]
unfold(f, 10) ## [-10, -20, -30, -40, -50]

まとめ

このチャレンジでは、イテレータ関数と初期のシード値を使用してリストを作成する方法を学びました。イテレータ関数と初期のシード値を引数として受け取り、イテレータ関数を使用してジェネレータによって生成されるリストを返す unfold 関数を実装しました。