def _ziprange(alist, ix):
    """
    returns zip of the list, and the one with ix added at the end and first element dropped

    Example
    -------

    ::
        alist = [2,4,7]
        _ziprange (alist, 10)

        -->

        zip([2,4,7], [4,7,10]) -> (2,4), (4,7), (7,10)

    """
    blist = alist.copy()
    blist.append(ix)
    del blist[0]
    return zip(alist, blist)