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

Reply via email to