Re: what should __iter__ return?

2010-09-08 Thread Terry Reedy
On 9/7/2010 9:40 PM, Gregory Ewing wrote: Thomas Jollans wrote: Hmm. Modifying an object while iterating over it isn't a great idea, ever: I wouldn't say never. How about Modifying a collection while iterating over it without understanding the dangers is a bad idea. Algorithms that

Re: what should __iter__ return?

2010-09-08 Thread Steven D'Aprano
On Wed, 08 Sep 2010 16:17:02 -0400, Terry Reedy wrote: On 9/7/2010 9:40 PM, Gregory Ewing wrote: Thomas Jollans wrote: Hmm. Modifying an object while iterating over it isn't a great idea, ever: I wouldn't say never. How about Modifying a collection while iterating over it without

Re: what should __iter__ return?

2010-09-07 Thread Gregory Ewing
Thomas Jollans wrote: Hmm. Modifying an object while iterating over it isn't a great idea, ever: I wouldn't say never. Algorithms that calculate some kind of transitive closure can be expressed rather neatly by appending items to a list being iterated over. You can accommodate that kind of

what should __iter__ return?

2010-09-03 Thread ernest
Hi, What is better: def __iter__(self): for i in len(self): yield self[i] or def __iter__(self): return iter([self[i] for i in range(len(self))]) The first one, I would say is more correct, however what if in a middle of an iteration the object changes in length? Then, the

Re: what should __iter__ return?

2010-09-03 Thread Thomas Jollans
On Friday 03 September 2010, it occurred to ernest to exclaim: Hi, What is better: def __iter__(self): for i in len(self): yield self[i] or def __iter__(self): return iter([self[i] for i in range(len(self))]) The first one, I would say is more correct, however

Re: what should __iter__ return?

2010-09-03 Thread MRAB
On 03/09/2010 20:35, ernest wrote: Hi, What is better: def __iter__(self): for i in len(self): yield self[i] or def __iter__(self): return iter([self[i] for i in range(len(self))]) The first one, I would say is more correct, however what if in a middle of an iteration the