Wishlist item: itertools.flatten

Ville Vainio ville at spammers.com
Fri Mar 11 23:44:39 CET 2005


>>>>> "Christos" == TZOTZIOY  <Christos> writes:

    >> For quick-and-dirty stuff, it's often convenient to flatten a sequence
    >> (which perl does, surprise surprise, by default):
    >> 
    >> [1,2,[3,"hello",[[4]]]]  ->
    >> 
    >> [1, 2, 3, 'hello', 4]

    Christos> See Python Library Reference, "5.16.3 Recipes".  Now
    Christos> that all and any (also

The recipe is:

def flatten(listOfLists):
    return list(chain(*listOfLists))

That one is trivial, because it only flattens one level. The
flattening I'm talking about involves flattening to arbitrary depth to
get a single sequence of "atoms". The itertools implementation might
also be able to avoid recursion by using a stack.

    Christos> This is just a personal opinion, but I detest restraints
    Christos> on library (itertools module in this case) expansion
    Christos> when talking about such useful *building blocks*.

Yeah - esp. in the case of flattening. If it was deemed useful enough
to be the default behavior in perl (which is admittedly braindamaged),
it should surely warrant being included as a single function in the
stdlib.

-- 
Ville Vainio   http://tinyurl.com/2prnb



More information about the Python-list mailing list