Search code examples
pythonpython-3.xstringlistpermutation

How to generate all possible combinations from the letters of strings in a list


I was trying to generate all possible combinations from the letters of strings in a list.

For example:

Input: ['jkl', 'ghi', 'def']
Output: ["jgd", "jge", "jgf", "jhd", "jhe", "jhf", "jid", "jie", "jif"...]

Solution

  • I can propose you a trivial algorithm to do the same, it is using recursion:

    def associations(entry):
        while len(entry) > 2:
            to_treat_later = entry.pop()
            print(f"We will treat {to_treat_later} later")
            entry = associations(entry)
            entry.append(to_treat_later)
        else:
            print(f"we can start with {entry}")
            associated_entry = []
            for elt_1 in entry[0]:
                for elt_2 in entry[1]:
                    associated_entry.append(f"{elt_1}{elt_2}")
            return [associated_entry]
    
    
    def convert_entry(entry):
        converted_entry = []
        for elt in entry:
            list_elt = []
            for letter in elt:
                list_elt.append(letter)
            converted_entry.append(list_elt)
        return converted_entry
    
    
    the_entry = ["jkl", "ghi", "def", "cfe"]
    associations(convert_entry(the_entry))