Maison > développement back-end > Tutoriel Python > Comment puis-je générer toutes les permutations d'une liste en Python ?

Comment puis-je générer toutes les permutations d'une liste en Python ?

Linda Hamilton
Libérer: 2024-12-22 13:15:12
original
920 Les gens l'ont consulté

How Can I Generate All Permutations of a List in Python?

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]))
Copier après la connexion

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:]
Copier après la connexion

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal