Building Lists with Iterators in Python (Challenge)

PythonPythonBeginner
Practice Now

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

Introduction

In Python, we can create a list using a variety of methods. One such method is by using an iterator function and an initial seed value. In this challenge, you will be tasked with building a list using an iterator function and an initial seed value.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("`Python`")) -.-> python/BasicConceptsGroup(["`Basic Concepts`"]) python(("`Python`")) -.-> python/ControlFlowGroup(["`Control Flow`"]) python(("`Python`")) -.-> python/DataStructuresGroup(["`Data Structures`"]) python(("`Python`")) -.-> python/FunctionsGroup(["`Functions`"]) python(("`Python`")) -.-> python/ErrorandExceptionHandlingGroup(["`Error and Exception Handling`"]) python(("`Python`")) -.-> python/AdvancedTopicsGroup(["`Advanced Topics`"]) python/BasicConceptsGroup -.-> python/comments("`Comments`") python/BasicConceptsGroup -.-> python/booleans("`Booleans`") python/ControlFlowGroup -.-> python/conditional_statements("`Conditional Statements`") python/ControlFlowGroup -.-> python/for_loops("`For Loops`") python/ControlFlowGroup -.-> python/while_loops("`While Loops`") python/ControlFlowGroup -.-> python/break_continue("`Break and Continue`") python/ControlFlowGroup -.-> python/list_comprehensions("`List Comprehensions`") python/DataStructuresGroup -.-> python/lists("`Lists`") python/DataStructuresGroup -.-> python/tuples("`Tuples`") python/FunctionsGroup -.-> python/function_definition("`Function Definition`") python/FunctionsGroup -.-> python/lambda_functions("`Lambda Functions`") python/ErrorandExceptionHandlingGroup -.-> python/custom_exceptions("`Custom Exceptions`") python/AdvancedTopicsGroup -.-> python/generators("`Generators`") subgraph Lab Skills python/comments -.-> lab-13204{{"`Building Lists with Iterators in Python (Challenge)`"}} python/booleans -.-> lab-13204{{"`Building Lists with Iterators in Python (Challenge)`"}} python/conditional_statements -.-> lab-13204{{"`Building Lists with Iterators in Python (Challenge)`"}} python/for_loops -.-> lab-13204{{"`Building Lists with Iterators in Python (Challenge)`"}} python/while_loops -.-> lab-13204{{"`Building Lists with Iterators in Python (Challenge)`"}} python/break_continue -.-> lab-13204{{"`Building Lists with Iterators in Python (Challenge)`"}} python/list_comprehensions -.-> lab-13204{{"`Building Lists with Iterators in Python (Challenge)`"}} python/lists -.-> lab-13204{{"`Building Lists with Iterators in Python (Challenge)`"}} python/tuples -.-> lab-13204{{"`Building Lists with Iterators in Python (Challenge)`"}} python/function_definition -.-> lab-13204{{"`Building Lists with Iterators in Python (Challenge)`"}} python/lambda_functions -.-> lab-13204{{"`Building Lists with Iterators in Python (Challenge)`"}} python/custom_exceptions -.-> lab-13204{{"`Building Lists with Iterators in Python (Challenge)`"}} python/generators -.-> lab-13204{{"`Building Lists with Iterators in Python (Challenge)`"}} end

Unfold List

Problem

Your task is to implement the unfold function that takes an iterator function and an initial seed value as arguments. The iterator function accepts one argument (seed) and must always return a list with two elements ([value, nextSeed]) or False to terminate. The unfold function should use a generator function, fn_generator, that uses a while loop to call the iterator function and yield the value until it returns False. Finally, the unfold function should use a list comprehension to return the list that is produced by the generator, using the iterator function.

Implement the unfold function:

def unfold(fn, seed):
    ## your code here

Input

  • An iterator function fn that accepts one argument (seed) and must always return a list with two elements ([value, nextSeed]) or False to terminate.
  • An initial seed value seed.

Output

  • A list that is produced by the generator, using the iterator function.

Example

f = lambda n: False if n > 50 else [-n, n + 10]
assert unfold(f, 10) == [-10, -20, -30, -40, -50]

Summary

In this challenge, you have learned how to build a list using an iterator function and an initial seed value. You have implemented the unfold function that takes an iterator function and an initial seed value as arguments and returns a list that is produced by the generator, using the iterator function.

Other Python Tutorials you may like