Permutations d'une chaîne en Python

Manav Narula 30 janvier 2023
  1. Utilisez la fonction itertools.permutations() pour renvoyer toutes les permutations d’une chaîne en Python
  2. Créer une fonction définie par l’utilisateur pour renvoyer toutes les permutations d’une chaîne en Python
Permutations d'une chaîne en Python

Par permutation, on entend le nombre total de réarrangements possibles pour un nombre donné d’éléments de manière unique sans tenir compte de l’ordre de réarrangement.

Une chaîne, comme nous le savons, peut être considérée comme une collection de caractères individuels.

Dans cet article, nous allons essayer de trouver toutes les permutations possibles pour une chaîne donnée.

Utilisez la fonction itertools.permutations() pour renvoyer toutes les permutations d’une chaîne en Python

Le module itertools permet de créer et de travailler avec différents objets itérables. La fonction permutations() de ce module peut renvoyer tous les arrangements possibles pour un ensemble de valeurs donné.
Il retourne un objet de type itertools qui contient un tuple contenant l’agencement possible des éléments. Nous pouvons utiliser une liste pour visualiser les éléments de cet objet. Nous pouvons également utiliser cette fonction avec une chaîne.

Par example,

from itertools import permutations

lst = list(permutations("day"))
print(lst)

Production:

[('d', 'a', 'y'), ('d', 'y', 'a'), ('a', 'd', 'y'), ('a', 'y', 'd'), ('y', 'd', 'a'), ('y', 'a', 'd')]

Remarquez les tuples créés dans la sortie contenant la disposition des caractères. Nous pouvons changer cela en une liste de chaînes en utilisant la fonction join() et la méthode de compréhension de liste.

Voir le code suivant.

from itertools import permutations

lst = ["".join(p) for p in permutations("day")]
print(lst)

Production:

['day', 'dya', 'ady', 'ayd', 'yda', 'yad']

Nous combinons les éléments du tuple à l’aide de la fonction join() et l’utilisons pour chaque tuple en itérant dans la liste.

Créer une fonction définie par l’utilisateur pour renvoyer toutes les permutations d’une chaîne en Python

Nous pouvons créer une fonction simple pour trouver toutes les permutations d’une chaîne. Nous allons créer une fonction récursive. Dans cette méthode, nous n’échangerons qu’une seule fois les éléments de chaîne et appellerons à nouveau la fonction avec le nouvel arrangement. Nous affichons les dispositions finales.

Nous implémentons la logique ci-dessus dans le code suivant.

def string_permutations(s, i, n):
    if i == n:
        print("".join(s))
    else:
        for j in range(i, n):
            s[i], s[j] = s[j], s[i]
            string_permutations(s, i + 1, n)
            s[i], s[j] = s[j], s[i]


a = "day"
x = len(a)
s = list(a)
print(permute(s, 0, x))

Production:

day
dya
ady
ayd
yad
yda
None

Comme vous pouvez le voir, les positions de début et de fin sont spécifiées là où nous souhaitons effectuer les réarrangements. La chaîne est également transmise sous forme de liste de caractères. Pour trouver toutes les permutations possibles, nous définissons le début à 0 et la fin comme longueur de la chaîne.

Auteur: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Article connexe - Python String