Introdução
Em Python, podemos criar uma lista usando uma variedade de métodos. Um desses métodos é usando uma função iteradora e um valor inicial (seed). Neste desafio, você será encarregado de construir uma lista usando uma função iteradora e um valor inicial.
Lista Unfold (Desdobramento de Lista)
Sua tarefa é implementar a função unfold que recebe uma função iteradora e um valor inicial (seed) como argumentos. A função iteradora aceita um argumento (seed) e deve sempre retornar uma lista com dois elementos ([value, nextSeed]) ou False para terminar. A função unfold deve usar uma função geradora (generator function), fn_generator, que usa um loop while para chamar a função iteradora e yield o value até que retorne False. Finalmente, a função unfold deve usar uma compreensão de lista (list comprehension) para retornar a lista produzida pelo gerador, usando a função iteradora.
Implemente a função unfold:
def unfold(fn, seed):
## your code here
Entrada (Input)
- Uma função iteradora
fnque aceita um argumento (seed) e deve sempre retornar uma lista com dois elementos ([value,nextSeed]) ouFalsepara terminar. - Um valor inicial (seed)
seed.
Saída (Output)
- Uma lista que é produzida pelo gerador, usando a função iteradora.
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]
Resumo
Neste desafio, você aprendeu como construir uma lista usando uma função iteradora e um valor inicial (seed). Você implementou a função unfold que recebe uma função iteradora e um valor inicial como argumentos e retorna uma lista que é produzida pelo gerador, usando a função iteradora.