def flatten(l: list):
    """
    Accepts a list containing one or more nested lists and returns a flattened copy.

    Parameters
    ----------
    l: list
        A list containing one or more lists. Can contain zero lists but there's no point

    Returns
    -------
    list
        A flattened version of the original list, no matter how deep. String elements
        are preserved as to not spread them out into individual characters.
    """
    new_list = []
    for i in l:
        if isinstance(i, list):
            new_list.extend(flatten(i))
        else:
            new_list.append(i)

    return new_list