Hlelp clean up clumpsy code

It's me itsme at yahoo.com
Tue Jan 4 13:16:39 EST 2005


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" <exarkun at divmod.com> wrote in message
news:mailman.140.1104857018.22381.python-list at python.org...
>
>
> On Tue, 04 Jan 2005 08:18:58 -0800, Scott David Daniels
<scott.daniels at acm.org> 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





More information about the Python-list mailing list