Générer toutes les permutations d'une liste
Étant donné une liste d'éléments, la tâche est de générer toutes les permutations possibles des éléments. Les permutations sont différentes combinaisons des éléments de la liste.
Solution de bibliothèque standard
La bibliothèque standard Python fournit la fonction itertools.permutations à cet effet :
import itertools list(itertools.permutations([1, 2, 3]))
Ce code génère toutes les permutations de la liste [1, 2, 3] et les renvoie sous forme de liste de tuples.
Implémentations alternatives
Voici une implémentation alternative d'une fonction de permutations utilisant la récursion :
def permutations(elements): if len(elements) <= 1: yield elements return for perm in permutations(elements[1:]): for i in range(len(elements)): yield perm[:i] + elements[0:1] + perm[i:]
Cette implémentation construit des permutations en ajoutant de manière itérative le premier élément de la liste à différentes positions dans les permutations du reste éléments.
Une autre approche alternative utilise itertools.product :
def permutations(iterable, r=None): pool = tuple(iterable) n = len(pool) r = n if r is None else r for indices in product(range(n), repeat=r): if len(set(indices)) == r: yield tuple(pool[i] for i in indices)
Cette implémentation parcourt toutes les combinaisons possibles d'indices de 0 à n-1 (où n est la longueur de la liste) et génère une permutation de chaque combinaison si les indices sont uniques (indiquant que chaque élément de la liste est inclus une fois).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!