Skip to content Skip to sidebar Skip to footer

Looping Through A Generator That Returns Multiple Values

My generator (batch_generator) returns 5 values, but I can't seem to figure out how to loop through the values. Things I've tried: 1) Unpack directly in the for loop definition (Va

Solution 1:

My yield statement looks like yield a, b, c, d, e

Based on that comment, the generator seems to emit a sequence of 5-tuples.

You can then simply use:

for a, b, c, d, e in batch_generator:
    #                ^ no next(..)
    pass

So you should not use next(..). Next simply returns the next yield. Now since that is a tuple, the for loop will iterate over the tuple, instead of the generator.

The for loop will iterate over the tuples the generator batch_generator emits, until the generator is exhausted (or there is a break/return statement in the for loop that is activated.

Mind that a for loop works like:

for <pattern> in <expression>:
    # ...

The <expression> should be an iterable (generator, tuple, list,...) and the <pattern> is used to assign to. If you iterate over the tuple, you thus iterate over the elements of that tuple, not the tuple in full.

Post a Comment for "Looping Through A Generator That Returns Multiple Values"