Sending changed parameters into nested generators

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Sat Nov 13 05:43:48 CET 2010


On Fri, 12 Nov 2010 09:47:26 +0000, John O'Hagan wrote:

> I have a generator function which takes as arguments another generator
> and a dictionary of other generators like this:
> 
> def modgen(gen, gendict):
>     for item in gen():
> 	for k, v in gendict:
> 		do_something_called_k(item, v.next())
> 	yield item
[snip]
> If anyone's still reading :) , how can I send new values to arbitrary
> sub- generators?

I have a headache after reading your problem :(

I think it's a good time to point you at the Zen, particularly these five 
maxims:

Beautiful is better than ugly.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
If the implementation is hard to explain, it's a bad idea.


I'm afraid that your nested generators inside another generator idea 
fails all of those... it's not elegant (beautiful), it's complicated, 
it's nested, and the implementation is hard to explain.

You could probably replace generators with full-blown iterators, but I 
wonder what you're trying to accomplish that is so complicated that it 
needs such complexity to solve it. What are you actually trying to 
accomplish? Can you give a simple example of what practical task you hope 
to perform? I suspect there's probably a more elegant way to solve the 
problem.


-- 
Steven



More information about the Python-list mailing list