Listen in Python mit Iteratoren erstellen

PythonPythonBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In Python können wir eine Liste auf verschiedene Weise erstellen. Eine solche Methode ist die Verwendung einer Iterationsfunktion und eines initialen Startwerts. In dieser Herausforderung müssen Sie eine Liste mithilfe einer Iterationsfunktion und eines initialen Startwerts erstellen.

Liste aufklappen

Ihre Aufgabe ist es, die Funktion unfold zu implementieren, die als Argumente eine Iterationsfunktion und einen initialen Startwert annimmt. Die Iterationsfunktion akzeptiert ein Argument (seed) und muss immer eine Liste mit zwei Elementen ([value, nextSeed]) zurückgeben oder False, um zu beenden. Die unfold-Funktion sollte eine Generatorfunktion fn_generator verwenden, die eine while-Schleife verwendet, um die Iterationsfunktion aufzurufen und den value auszugeben, bis sie False zurückgibt. Schließlich sollte die unfold-Funktion eine Listenkomprehension verwenden, um die Liste zurückzugeben, die vom Generator erzeugt wird, indem die Iterationsfunktion verwendet wird.

Implementieren Sie die unfold-Funktion:

def unfold(fn, seed):
    ## Ihr Code hier

Eingabe

  • Eine Iterationsfunktion fn, die ein Argument (seed) akzeptiert und immer eine Liste mit zwei Elementen ([value, nextSeed]) zurückgeben oder False, um zu beenden.
  • Ein initialer Startwert seed.

Ausgabe

  • Eine Liste, die vom Generator erzeugt wird, indem die Iterationsfunktion verwendet wird.
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]

Zusammenfassung

In dieser Herausforderung haben Sie gelernt, wie Sie eine Liste mithilfe einer Iterationsfunktion und eines initialen Startwerts erstellen. Sie haben die unfold-Funktion implementiert, die als Argumente eine Iterationsfunktion und einen initialen Startwert annimmt und eine Liste zurückgibt, die vom Generator erzeugt wird, indem die Iterationsfunktion verwendet wird.