Skip to content

Home

Unfold list

Builds a list, using an iterator function and an initial seed value.

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]

More like this

Start typing a keyphrase to see matching snippets.