919 B
919 B
title, tags, expertise, firstSeen, lastUpdated
| title | tags | expertise | firstSeen | lastUpdated |
|---|---|---|---|---|
| Unfold list | function,list | advanced | 2020-01-02T20:17:51+02:00 | 2020-11-02T19:28:35+02:00 |
Builds a list, using an iterator function and an initial seed value.
- The iterator function accepts one argument (
seed) and must always return a list with two elements ([value,nextSeed]) orFalseto terminate. - Use a generator function,
fn_generator, that uses awhileloop to call the iterator function andyieldthevalueuntil it returnsFalse. - Use a list comprehension to return the list that is produced by the generator, using the iterator function.
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]