def zip_longest_padded()

in domainbed_measures/utils.py [0:0]


def zip_longest_padded(*iterables):
    # zip('ABCD', 'xy') --> Ax By Cx Dy
    sentinel = object()
    iterators = [iter(it) for it in iterables]
    iterator_lengths = [len(it) for it in iterables]

    for _ in range(max(iterator_lengths)):
        result = []
        for it_idx, it in enumerate(iterators):
            elem = next(it, sentinel)
            if elem is sentinel:
                iterators[it_idx] = iter(iterables[it_idx])
                elem = next(iterators[it_idx], sentinel)

            result.append(elem)
        yield tuple(result)