毎日Learning

学んだことを共有します

P07 (**) ネスト化されたリストをフラット化する。

def main():
    print flatten("a") == None
    print flatten(11) == None
    print flatten([]) == []
    print flatten(["a"]) == ["a"]
    print flatten(["a", "b"]) == ["a", "b"]
    print flatten(["a", "b", ["c", "d"]]) == ["a", "b", "c", "d"]
    print flatten(["a", "b", ["c", "d"], "e"]) == ["a", "b", "c", "d", "e"]
    print flatten(["a", ["b", ["c", "d"], "e"]]) == ["a", "b", "c", "d", "e"]
    print flatten(["a", ["b", ["c", ["d", ["e"], "f"], "g"], "h"], "i"]) == ["a", "b", "c", "d", "e", "f", "g", "h", "i"]

def flatten(lista):
    return reduce(extender, lista, []) if isinstance(lista, list) else None

def extender(l, v):
    if isinstance(v, list):
        l.extend(flatten(v))
    else:
        l.extend(v)
    return l

if __name__ == "__main__":
    main()