def exactZip(*args):
    """
    Zip, but raise a ValueError if the iterables are different length
    
    :param args: Multiple iterables to zip, each with a known length
    """
    lengths = [len(a) for a in args]
    if len(set(lengths)) <= 1:
        return zip(*args)
    else:
        raise ValueError("Iterables were of different lengths; {0}".format(args))