+ 4
What's happening here?
uncommenting the only commented line fails the code. why is it? also, without uncommenting, if i try list comprehension instead of generator, there is RecursionError. https://code.sololearn.com/cRvoK31O3qFN/?ref=app
2 Answers
+ 6
In the first part there is a generator. And a generator is just a set of commands yet to be executed.
A = (i for i in range(67))
Here, A is a generator. It only knows 'what to do' and hasn't done anything yet. It hasn't created the sequence of numbers.
That is why this also runs without error:
def evens(): #infinite sequence
n = 0
while True:
yield i
i += 2
B = evens()
Now when you execute the generator, you may get error since it is only now that the generator-code is running.
For example,
print(list(B)) #memoryerror
here, the actual sequence is being created hence error.
Another example:
def recur():
yield 1 #to make it a generator
yield from recur()
C = recur() #no error
print(list(C)) #recursionerror
+ 3
Harsha S
If n=50, then your code works on Sololearn, so I think fibonacci 500 may be too big for the allowed processing time on Sololearn.
It fails above n = 498