map/filter/reduce/lambda opinions and background unscientific mini-survey

Ron Adam rrr at ronadam.com
Mon Jul 4 17:46:00 EDT 2005


George Sakkis wrote:

> And finally for recursive flattening:
> 
> def flatten(seq):
>     return reduce(_accum, seq, [])
> 
> def _accum(seq, x):
>     if isinstance(x,list):
>         seq.extend(flatten(x))
>     else:
>         seq.append(x)
>     return seq
> 
> 
>>>>flatten(seq)
> 
> [1, 2, 3, 4, 5, 6]
> 
> 
> George
> 

How about this for a non recursive flatten.

def flatten(seq):
     s = []
     while seq:
         while isinstance(seq[0],list):
             seq = seq[0]+seq[1:]
         s.append(seq.pop(0))
     return s

seq = [[1,2],[3],[],[4,[5,6]]]
flatten(seq)


Ron



More information about the Python-list mailing list