Создание списков с использованием итераторов в Python

PythonPythonBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В Python мы можем создавать список с использованием различных методов. Одним из таких методов является использование итераторной функции и начального значения семени. В этом испытании вам будет поручено создать список с использованием итераторной функции и начального значения семени.

Раскрыть список

Ваша задача — реализовать функцию unfold, которая принимает в качестве аргументов итераторную функцию и начальное значение семени. Итераторная функция принимает один аргумент (seed) и должна всегда возвращать список из двух элементов ([value, nextSeed]) или False, чтобы прекратить работу. Функция unfold должна использовать генераторную функцию fn_generator, которая использует цикл while для вызова итераторной функции и yield значения value, пока она не вернет False. Наконец, функция unfold должна использовать списочное выражение для возврата списка, который генерируется генератором, с использованием итераторной функции.

Реализуйте функцию unfold:

def unfold(fn, seed):
    ## ваш код здесь

Входные данные

  • Итераторная функция fn, которая принимает один аргумент (seed) и должна всегда возвращать список из двух элементов ([value, nextSeed]) или False, чтобы прекратить работу.
  • Начальное значение семени 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, которая принимает в качестве аргументов итераторную функцию и начальное значение семени и возвращает список, который генерируется генератором, с использованием итераторной функции.