def alternation( *items ):
    """Lazy evaluation that flattens input items """
    for alt_item in items:
        if hasattr(alt_item, '__iter__'):
            #flatten generator item
            for item in alt_item:
                yield item
        else:
            yield alt_item
Lazy evaluation that flattens input items 
recipes/Python/576585_Lazy_recursive_generator/recipe-576585.py