Переделать назначение кода python

есть код, выполняющий перебор комбинаций букв из массива (см. код) Работает правильно и алгоритм верен, мне нужно что бы данный код выполнял тоже самое только на основе слов вместо букв и выводил в строку комбинации слов через запятую:
Пример: Кошка собака дом => Кошка собака дом, кошка дом собака, кошка дом, кошка собака, кошка, собака кошка, собака дом, собака, собака дом кошка, собака кошка дом, дом, дом собака, дом кошка, дом собака кошка, дом кошка собака.

def gencombs(comb, lst, idx):
    if idx >= len(lst):
        print(comb)
    else:
        for i in range(len(comb),-1, -1):
            gencombs(comb[:i] + [lst[idx]] + comb[i:], lst, idx + 1)
        gencombs(comb, lst, idx + 1)

gencombs([],"abc", 0)

Ответы (2 шт):

Автор решения: qvakie

Попробуй лучше библиотеку itertools, там есть метод: permutations, который принимает в себя iterable (например массив) и количество перестановок Пример:

from itertools import *

a = ['Cat', 'Dog', 'House']

a = permutations(a)
for i in a:
    print(''.join(list(i)), end=', ')

Выведет:

CatDogHouse, CatHouseDog, DogCatHouse, DogHouseCat, HouseCatDog, HouseDogCat
→ Ссылка
Автор решения: MBo

Ну там же и надо было спросить. Код перебирает элементы iterable объектов (т.е. таких, из которых можно взять элементы по одному - по индексу или другими средствами) - в примере строка, но это может быть и список (строк или чего угодно)

gencombs([], ["Кошка", "собака", "дом"], 0)
→ Ссылка