Hello, I am new to Python and I'm having trouble with generators. I have built a tree (and verified that it looks good, and my left() and right() functions are correct as well), and I am able to traverse it as I would expect:
def preorder(tree, index, path=[]): if index >= len(tree): return path = path + [tree[index]] print path preorder(tree, left(index), path) preorder(tree, right(index), path) preorder(tree, 0) This prints out a series of lists, each containing a subtree, as expected. E.g., [0] [1, 2] [3, 4, 5, 6] ... However when I attempt to convert preorder() to a generator and iterate over the results things don't go as planned: def preorder(tree, index, path=[]): if index >= len(tree): return path = path + [tree[index]] yield path preorder(tree, left(index), path) preorder(tree, right(index), path) for subtree in preorder(tree, 0): print subtree This results in only the first list being returned: [0] I suspect it has something to do trying to, on the second pass, yield from a generator that hasn't been created. Does that sound right? If so, what can I do? Would somebody please enlighten this poor confused dev? Thank you in advance. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor