Pour une raison quelconque, je vais avoir du mal réel envelopper ma tête autour des algorithmes récursifs ...Comment combiner des listes (en chaîne) de manière récursive?
je me demandais si quelqu'un pouvait me aider à trouver une version récursive de ce qui suit:
J'ai une liste des listes de nombres et je veux obtenir toutes les listes possibles de permutations de tous les éléments.
Par exemple, étant donné [[1], [2,3], [4,5]]
, je veux que la sortie soit:
[[1,2,3,4,5], [1,2,3,5,4], [1,3,2,4,5], [1,3,2,5,4]]
La façon dont je l'ai fait est assez laid:
l = (my list)
perms = [list(permutations(i)) for i in l]
p = perms[0]
for i in range(1, len(perms)):
p = list(map(lambda x: list(chain.from_iterable(x)), list(product(p, perms[i]))))
i += 1
print(p)
Je ne l'aime pas .. J'ai l'impression que la récursivité pourrait être plus élégante. Des pensées?