__iter__ yield
George Sakkis
george.sakkis at gmail.com
Sun Mar 9 23:12:58 EDT 2008
On Mar 9, 7:37 pm, Paul Hankin <paul.han... at gmail.com> wrote:
> On Mar 9, 8:58 pm, duccio <d... at tiscali.it> wrote:
>
> > Someone knows if it's possible to make this __iter__ function with just
> > one 'yield' intead of two?
> > ...
> > def __iter__(self):
> > yield self #1
> > for n in self.childs:
> > for nn in n.__iter__():
> > yield nn #2
>
> Only one yield and shorter (but not really any simpler):
>
> from itertools import chain
>
> class Node:
> ...
> def __iter__(self):
> for x in chain([self], *self.childs):
> yield x
Actually this doesn't need a yield at all:
class Node:
...
def __iter__(self):
return chain([self], *self.childs)
George
More information about the Python-list
mailing list