def changeOne(aa,idx): aa[idx]=not aa[idx] yield aa for i in range(idx): for x in changeOne(aa,i): yield x
def changeOneOrder(aa): yield aa for i in range(len(aa)): for x in changeOne(aa,i): yield x a=[False]*3 og=changeOneOrder(a) #this does not return the way I would expect. why? list(og) #returns #[[False, False, True], [False, False, True], [False, False, True], [False, False, True], [False, False, True], [False, False, True], [False, False, True], [False, False, True]] #this works as expected a=[False]*3 og=changeOneOrder(a) og.next() og.next() ... #this works as expected def ty(): yield 1 yield 2 yield 3 tg=ty() list(tg) cheers, Roland -- http://mail.python.org/mailman/listinfo/python-list