Cyclic Element Aggregation Iterator

  • Share this:

Code introduction


This function creates an iterator that aggregates elements from each of the provided iterables. The iterator returns a tuple containing one element from each of the iterables. If the iterables are of uneven length, missing values are filled-in with fillvalue. Elements are taken from the iterables in a cyclic order, which means that the iterator does not reset the starting position of each iterable every time it returns a tuple. Instead, it continues from where it left off, potentially reusing values from the beginning of an iterable if the end is reached first.


Technology Stack : itertools

Code Type : Iterator

Code Difficulty : Intermediate


                
                    
def zip_longest(*args, fillvalue=()):
    """Create an iterator that aggregates elements from each of the iterables. The iterator returns a tuple containing one element from each of the iterables. If the iterables are of uneven length, missing values are filled-in with fillvalue. Elements are taken from the iterables in a cyclic order. This means that the iterator does not reset the starting position of each iterable every time it returns a tuple. Instead, it continues from where it left off, potentially reusing values from the beginning of an iterable if the end is reached first. 

    Args:
        *args: An arbitrary number of iterables.
        fillvalue: The value to use for missing values if the iterables are of uneven length.

    Returns:
        An iterator that aggregates elements from the provided iterables.

    """
    from itertools import zip_longest
    return zip_longest(*args, fillvalue=())                
              
Tags: