On Tue, 04 Jan 2005 08:18:58 -0800, Scott David Daniels <[EMAIL PROTECTED]> wrote: >Nick Coghlan wrote: > > A custom generator will do nicely: > > > > Py> def flatten(seq): > > ... for x in seq: > > ... if hasattr(x, "__iter__"): > > ... for y in flatten(x): > > ... yield y > > ... else: > > ... yield x > > Avoiding LBYL gives you: > def flatten(seq): > for x in seq: > try: > for y in flatten(x): > yield y > except TypeError: > yield x
But totally messes up on error handling. Instead: def flatten(seq): for x in seq: try: subseq = iter(x) except TypeError: yield x else: for subx in flatten(subseq): yield subx to avoid catching TypeErrors from .next(). Jp -- http://mail.python.org/mailman/listinfo/python-list