3 ms·
Less verbose. Also, what happens if you have even more nested lists you want to flatten? Personally I think it should just be flatten(range(i) or i in ra
by shawabawa3 10y ago
Less verbose.
Also, what happens if you have even more nested lists you want to flatten?
Personally I think it should just be
flatten(range(i) or i in range(5))
With flatten in the global namespace
- OskarS 10y agoGiven 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.
- toyg 10y agoI've not tried, but you can probably get that by recursively mixing standard constructs and functools.chain.from_iterable().
- OskarS 10y agoYou should try. It's harder than it seems. (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).