__iter__ yield

Paul Hankin paul.hankin at gmail.com
Sun Mar 9 19:37:29 EDT 2008


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

--
Paul Hankin



More information about the Python-list mailing list