Введение
В 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, которая принимает в качестве аргументов итераторную функцию и начальное значение семени и возвращает список, который генерируется генератором, с использованием итераторной функции.