ジェネレータ使うならこんな感じか。

def iter_deep_array(a):
    for x in a:
        if isinstance(x, list):
            for y in iter_deep_array(x):
                yield y
        else:
            yield x

def flatten(a):
    return list(iter_deep_array(a))

print flatten([[1,2,[3],[4,[5,6],[7,8],[9]]]])