Style question on recursive generators

Carlos Ribeiro carribeiro at gmail.com
Mon Oct 18 18:52:37 CEST 2004


On Mon, 18 Oct 2004 17:42:15 +0200, Stefan Behnel
<behnel_ml at dvs1.informatik.tu-darmstadt.de> wrote:
> Carlos Ribeiro schrieb:
> > def walk(self):
> >    """generator-based recursive tree traversal"""
> >    yield child
> >    for child in childs:
> >         transfer child.walk()
> >
> > It's quite weird -- a generator plus a direct flow-of-execution
> > transfer. It's not a goto, its not a co-routine... It requires a new
> > keyword ('transfer', in this case), which _is_ a real problem --
> > something like this can't be lightly proposed. In this case, it's just
> > a thought experiment, at this point; nothing serious, and far from a
> > proposal.
> 
> 
> I know what it feels like. I had to implement the same thing for a
> recursive parser once - looks somewhat inefficient to iterate over a
> iterator only for yielding the iterator's results...
> 
> Maybe you know the itertools module?
> 
> http://www.python.org/dev/doc/devel/lib/itertools-functions.html
> 
> It has some nice functions that can make this sort of code more readable
> (and maybe even more efficient). You may find itertoold.chain especially
> useful.

Thanks -- that's a really good reference. I think I should read more
of the documentation instead of banging up my own home made solution
:-) Anyway, it does not solve the recursion problem per se, but it
gave me some ideas on own can I rewrite the code. I'll try it later...


-- 
Carlos Ribeiro
Consultoria em Projetos
blog: http://rascunhosrotos.blogspot.com
blog: http://pythonnotes.blogspot.com
mail: carribeiro at gmail.com
mail: carribeiro at yahoo.com



More information about the Python-list mailing list