Flatten arbitrary depth of nesting. Good for unknown nesting structure
    iterable object.

    Usage::

        >>> flatten_all([[0, 1], [2, 3, [4, 5], [6, 7, 8]], [9,]])
        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

def flatten_all(list_of_list):
    """Flatten arbitrary depth of nesting. Good for unknown nesting structure
    iterable object.

    Usage::

        >>> flatten_all([[0, 1], [2, 3, [4, 5], [6, 7, 8]], [9,]])
        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    """
    for i in list_of_list:
        if hasattr(i, "__iter__"):
            for j in flatten_all(i):
                yield j
        else:
            yield i