On Sep 21, 2009, at 1:32 AM, Alan Gauld wrote:

kevin parks wrote:

called, and what it is an example of. I guess there are generators and iterators now and it seems this might be an example of one of those new

This is a generator expression.

That's unfortunate news for me.

It is like a list comprehension (you know about those right?)

Yes. I know and use and love them daily. Even if there were implemented backwards :) [for x in range(10) x**2] would have been easier than: [x**2 for x in range(10)] But i am used to it now.


except it doesn't create the list it just returns each item on demand. You could think of a list as a list constructed using a generator expression.

def roundrobin(*iterables):
   "roundrobin('ABC', 'D', 'EF') --> A D E B F C"
   # Recipe credited to George Sakkis
   pending = len(iterables)
   nexts = cycle(iter(it).next for it in iterables)

note this is storing the next methods not the results of them.

   while pending:
       try:
           for next in nexts:
               yield next()

So the yield calls the stored method and returns the result.


So... then to call (by call i mean use/execute/doit) i would do, what? foo.next()

I kinda understand conceptually what iterators and generators do and why they are "a honking good idea" (why create 100 of x when we just want the 100th, etc.) what i don't get is the syntax and how they are used in real life. How generator and iterators behave in the wild. I am also bummed since generators have methods, which means they are OO which means i am i'd be in for 16 years of computer science study and super arcane, obscure and opaque concepts like what to do with __self__ and all that junk before i can use them.

Anyway i needed a pea shooter that does a round robin. This one does it, but i don't know how to use it.

I read up on gennies and itties and see if i can get my head around it. They are really poorly addressed nearly everywhere i look. They are explained so that really smart folks who know a lot of CS and are fluent in 15 computer languages can understand them, but not us mortals. Even the Lutz is too terse and generally poor on these two complex and relatively new constructs. They are a dark and obscure magic. I'll try the links Kent pointed me to first and see how that goes.

thanks,

-kp--




















_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to