+ 1
Why work It?
I have this code, and work only if I use any(), and I don't know why this don't work without any() a=[0,1] b=[0,1] map(lambda _: a.append(sum(a[-2:])),range(2,10)) any(map(lambda _: b.append(sum(b[-2:])),range(2,10))) print(a) print(b)
1 Answer
+ 4
# Hi, Pedro Dominguez !
# In your code,
# map(lambda _: a.append(sum(a[-2:])),range(2,10))
# creates an iterator. When you put any() around it, it will result in that you traverse through the iterator, calling the lambda function each time it iterate.
# So map() will just act as a loop and run the lambda function:
# lambda _: a.append(sum(a[-2:])
# which create a Fibonacci sequence when the the function is looped. A better approach would be this:
def f(n):
l = [0, 1]
for i in range(2, n):
l.append(sum(l[-2:]))
return l[:]
print(f"{f(10) = }\n")
# You can get the same with your map function, but it is not a good approach:
a = [0,1]
m = map(lambda _: a.append(sum(a[-2:])),range(2,10))
next(m)
print(a)
next(m)
print(a)
next(m)
print(a)
next(m)
print(a)
next(m)
print(a)
next(m)
print(a)
next(m)
print(a)
next(m)
print(a)
# and your list a will slowly growe...
https://code.sololearn.com/cIG5i23pqfm3/?ref=app