當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。