def deepflatten_sequence()

in augmentation/utils.py [0:0]


def deepflatten_sequence(lst: List, sequence_type = List):
    """
    Flattens any nested sequence, for example:
    [[1, 2, 3], [[4], [5, [6], 7]]] -> [1, 2, 3, 4, 5, 6, 7]
    """
    def step(acc, elem):
        (lst, curr_idx) = acc
        if not isinstance(elem, sequence_type):
            lst[curr_idx] = elem
            return (lst, curr_idx + 1)
        return reduce(step, elem, acc)

    num_elements = count_elements_in_nested_sequence(lst, sequence_type)
    # to avoid reallocation
    result = [None] * num_elements
    result, _ = reduce(step, lst, (result, 0))
    return result