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