wydruk powerset łańcucha

Próbuję napisać kod Pythona, aby wydrukowaćzestaw zasilający ciągu, ale napotykam na pewne błędy. Oto co mam:

def getperm (string):
    perm = []
    if len(string) == 0:
        perm.append("")
        return perm
    #if len(string) == 1:
    #   perm.append(string)
    #   perm.append("")
    first = string[0]
    print "first = " + str(first)
    rem = string[1:len(string)]
    print "rem = " + str(rem)
    words = getperm(rem)
    for word in words:
        for i in range(len(word)):
            temp = string[0:i] + first + string[i:len(string)]
            print "temp = " + str(temp)
            perm.append(temp)

    return perm

if __name__=="__main__":
    a = "ab"
    mag  = getperm(a)
    print mag

Moim oczekiwanym rezultatem będzie:

['', 'a', 'b', 'ab']

Moje rzeczywiste wyjście to:

[]

Czy ktoś może mi pomóc dowiedzieć się, co się dzieje? Czy to jakiś niuans python, czy jest jakiś błąd w moim kodzie? Myślę, że mój kod powinien być w porządku - odchodzę od piątej edycji Cracking the coding interview

Dziękuję Ci!

questionAnswers(6)

yourAnswerToTheQuestion