On Mar 9, 7:37 pm, Paul Hankin <[EMAIL PROTECTED]> wrote: > On Mar 9, 8:58 pm, duccio <[EMAIL PROTECTED]> 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 -- http://mail.python.org/mailman/listinfo/python-list