当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python itertools.zip_longest用法及代码示例


用法:

itertools.zip_longest(*iterables, fillvalue=None)

创建一个迭代器,聚合来自每个可迭代对象的元素。如果可迭代的长度不均匀,则缺失值为 filled-in 和 fillvalue 。迭代一直持续到最长的可迭代对象用完为止。大致相当于:

def zip_longest(*args, fillvalue=None):
    # zip_longest('ABCD', 'xy', fillvalue='-') --> Ax By C- D-
    iterators = [iter(it) for it in args]
    num_active = len(iterators)
    if not num_active:
        return
    while True:
        values = []
        for i, it in enumerate(iterators):
            try:
                value = next(it)
            except StopIteration:
                num_active -= 1
                if not num_active:
                    return
                iterators[i] = repeat(fillvalue)
                value = fillvalue
            values.append(value)
        yield tuple(values)

如果其中一个可迭代对象可能是无限的,那么 zip_longest() 函数应该用一些限制调用次数的东西来包装(例如 islice()takewhile() )。如果未指定, fillvalue 默认为 None

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 itertools.zip_longest。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。