like zip (for things that have a length), but repeats the last element of all shorter lists such that the result is as long as the longest.

def fillzip(*l):
    """like zip (for things that have a length), but repeats the last element of all shorter lists such that the result is as long as the longest."""
    maximum = max(len(el) for el in l)
    return zip(*[el + [el[-1]]*(maximum-len(el)) for el in l])