Hi,

I just cannot get my head around the following code, maybe someone could explain it to me.

def permutations(items):
    n = len(items)
    if n==0: yield []
    else:
        for i in range(len(items)):
            for cc in permutations(items[:i]+items[i+1:]):
                yield [items[i]]+cc

for p in permutations(list("XYZ")):
    print(''.join(p))


I did not figure out how this works in the deepest level of the recursion. I mean, when I go down the recursion level
and do the part "for cc in permutations("Z")".

I have a problem with the following understanding:
when I am in the recursion and call "for cc in permutations("Z")", the next level of the recursion will do "for cc in permutations([])", which will yield an empty list.

But when "for cc in permutations([])" yields an empty list, why does "for cc in permutations("Z")" then actually have an item so that "yield [items[i]]+cc" will be executed? So although "for cc in permutations("Z")" does have an item it does "yield [items[i]]+cc" - thats the confusion for me. I hope I could express myself clearly.

Maybe someone could enlighten me, I would be more than happy since I have been thinking for quite some time about this and it does not let me sleep, hehe.

thanks in advance,

noopy




_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to