Given that flatten is surprisingly tricky to get right, it really should be built-in. The naive recursive variant will crash python if you nest lists beyond the stack limit, which is very no bueno. A list that's nested 10,000 layers deep is not especially hard to create or store in memory, and a flatten implementation should be able to handle it without crashing the interpreter.
In fact, it's not a bad little programming exercise: making a flatten that performs well and never crashes because of stack overflow.
(I mean, it's not the most challenging problem ever, but most programmers look at it and go "that's trivial, just do X!", and it's a bit trickier than that).
In fact, it's not a bad little programming exercise: making a flatten that performs well and never crashes because of stack overflow.