Generator Functions
def count_up(n):
for i in range(n):
yield i | Generator with yield |
def gen():
yield 1
yield 2
yield 3 | Multiple yields |
next(g) | Get next value |
list(g) | Collect all values |
for v in gen(): pass | Iterate generator |
Generator Expressions
g = (x**2 for x in range(10)) | Generator expression |
sum(x for x in data if x > 0) | Lazy sum |
Advanced
value = yield expression | Send values into generator |
gen.send(value) | Send value to generator |
yield from other_gen() | Delegate to sub-generator |
from itertools import islice
islice(gen(), 5) | Take first N values |