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()