What's "LBYL"? Oh...Look-before-you-leap. OK. I think I understand what's going on now (I read up on generator and iterators and my head still hurts). I knew there must be a cleaner way of "walking" around in Python. I will experiment with generator more.
Thanks everybody. "Jp Calderone" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > > > 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