Search code examples
pythoncasepermutationletters

How to get all permutations of letters as well as case for a string in python?


How to get all possible combination of cases as well as letters for a string in python?

Example

input:'ab' output:aB', 'Ba', 'BA', 'Ab', 'AB', 'bA'

input : 'dan' output:aND', 'ANd', 'Dna', 'naD', 'DaN', 'aDn', 'Adn', 'dnA', 'NdA', 'anD', 'DnA', 'NAD', 'nAD', 'Dan', 'NDA', 'nAd', 'AdN', 'DAn', 'AnD', 'And', 'DNA', 'daN', 'adN', 'nDa', 'dAN', 'dNa', 'aDN', 'ADN', 'dNA', 'Nda', 'AND', 'DNa', 'NaD', 'Nad', 'aNd', 'nDA', 'dAn', 'NAd', 'ndA', 'NDa', 'ADn', 'DAN'


Solution

  • This can be done using itertools

    from itertools import permutations
    def perm(word):
        perms = [''.join(p) for p in permutations(word)]
        print(perms)
        return perms
    
    def capPer(arrPerm):
        result=[]
        for val in arrPerm:
            wordList=list(val)
    
            for i,letter in enumerate(wordList):
                wordList[i]=letter.upper()
                result.extend(perm(''.join(wordList)))
        return set(result)
    
    def combi(wrd):
        print(capPer(perm(wrd)))
    
    
    combi('ab')
    combi('dan')
    
    **output:**
    set(['aB', 'Ba', 'BA', 'Ab', 'AB', 'bA'])
    set(['aND', 'ANd', 'Dna', 'naD', 'DaN', 'aDn', 'Adn', 'dnA', 'NdA', 'anD', 'DnA', 'NAD', 'nAD', 'Dan', 'NDA', 'nAd', 'AdN', 'DAn', 'AnD', 'And', 'DNA', 'daN', 'adN', 'nDa', 'dAN', 'dNa', 'aDN', 'ADN', 'dNA', 'Nda', 'AND', 'DNa', 'NaD', 'Nad', 'aNd', 'nDA', 'dAn', 'NAd', 'ndA', 'NDa', 'ADn', 'DAN'])