I have a class where each instance is basically of a bunch of nested lists, each of which holds a number of integers or another list containing integers, or a list of lists, etc., like so:
class Foo(list):
    def __init__(self):
        self.extend(
            list(1), list(2), list(3), range(5), [range(3), range(2)]
            )
I want to define a method to walk the nested lists and give me
one integer at a time, not unlike os.walk. I tried this:
def _walk(self):
    def kids(node):
        for x in node:
            try:
                for y in kids(x):
                    yield y
            except TypeError:
                yield x
    return kids(x)
But it immediately raises a stopiteration error. If I add a print statement to print each "node" in the first for loop, the function appears to iterate over the whole container in the way I want, but without yielding each node. It just prints them all the first time I call next on the generator.
I'm stumped. Please help!
 
     
    