Strange range

Marko Rauhamaa marko at pacujo.net
Fri Apr 1 09:15:41 EDT 2016


This seems sane:

    >>> it = iter(range(10))
    >>> for i in it:
    ...   if i >= 3:
    ...     break
    ...
    >>> list(it)
    [4, 5, 6, 7, 8, 9]

As does this:

    >>> it = iter(list(range(10)))
    >>> for i in it:
    ...   if i >= 3:
    ...     break
    ...
    >>> list(it)
    [4, 5, 6, 7, 8, 9]

This not so much:

    >>> it = range(10)
    >>> for i in it:
    ...   if i >= 3:
    ...      break
    ...
    >>> list(it)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Note to self: range(10) is an iterator factory, not an iterator.


Marko



More information about the Python-list mailing list