Strange range

Jussi Piitulainen jussi.piitulainen at helsinki.fi
Fri Apr 1 10:28:40 EDT 2016


Fabien writes:

> On 04/01/2016 03:26 PM, Steven D'Aprano wrote:
>> Incorrect. range is a lazy sequence.
>
> But how does range "know" that it has to start from scratch again? As
> in this example:
>
> it = range(10)
> for i in it:
>     if i >= 3:
>         break
> for i in it:
>     # why does it start from zero again?
>     print(i)

The loops are effectively iterating over iter(it) each time. Since "it"
is not already an iterator, iter constructs a new one based on "it".

Try it = iter(range(10)) to see it not start over.



More information about the Python-list mailing list