Can generators be recursive?

I naively tried to create a recursive generator. Didn't work. This is what I did:

    def recursive_generator(lis):
        yield lis[0]
        recursive_generator(lis[1:])

    for k in recursive_generator([6,3,9,1]):
        print(k)

All I got was the first item 6.

Is there a way to make such code work? Essentially transferring the yield command to the level above in a recursion scheme?

Try this:

    def recursive_generator(lis):
        yield lis[0]
        yield from recursive_generator(lis[1:])

    for k in recursive_generator([6,3,9,1]):
        print(k)

I should point out this doesn't work because of a bug in your function. It should probably include a check that lis isn't empty, as shown below:

    def recursive_generator(lis):
        if lis:
            yield lis[0]
            yield from recursive_generator(lis[1:])

In case you are on Python 2.7 and don't have yield from, check this question out.

From: stackoverflow.com/q/38254304