Best way to check that you are at the beginning (the end) of an iterable?

Chris Rebert clp2 at
Thu Sep 8 04:27:09 CEST 2011

On Wed, Sep 7, 2011 at 5:24 PM, Miki Tebeka <miki.tebeka at> wrote:
> I guess enumerate is the best way to check for first argument. Note that if someone passes you the iterator as argument you have now way of checking if the consumed items from it.
> istail can be implemented using itertools.chain, see

For the archives, if Gist ever goes down:

from itertools import chain

def istail(it):
    '''Check if iterator has one more element. Return True/False and
        i = next(it)
    except StopIteration:
        return False, it

        j = next(it)
        return False, chain([i, j], it)
    except StopIteration:
        return True, chain([i], it)

t, it = istail(iter([]))
print t, list(it)
t, it = istail(iter([1]))
print t, list(it)
t, it = istail(iter([1, 2]))
print t, list(it)

More information about the Python-list mailing list