def my_range(start, stop, step): for i in range(start, stop, step=step): yield i
How can I rewrite the above code so I don’t have to (explicitly at least) loop through the inner generator yielding each item one-by-one?
You can simply use the
yield from statement to delegate the generator functionality to another generator. In this case, it would be the built-in
range() function. Here’s the modified code:
def my_range(start, stop, step): yield from range(start, stop, step)
Now you don’t need an explicit loop for yielding the items of the
range() generator one-by-one.