Recherche de site Web

Permutations et combinaisons en Python


Les permutations et combinaisons d'un ensemble d'éléments sont différentes arrangements des éléments de l'ensemble.

  • Combinaison est un ensemble d'éléments où l'ordre n'a pas d'importance.
  • Permutation est un agencement d'un ensemble où l'ordre a de l'importance.

Considérons un ensemble comme :

{A, B, C}

Les permutations de l'ensemble ci-dessus sont les suivantes :

('A', 'B', 'C')
('A', 'C', 'B')
('B', 'A', 'C')
('B', 'C', 'A')
('C', 'A', 'B')
('C', 'B', 'A')

Les combinaisons de l'ensemble ci-dessus lorsque deux éléments sont pris ensemble sont :

('A', 'B')
('A', 'C')
('B', 'C')

Dans ce tutoriel, nous allons apprendre comment obtenir les permutations et les combinaisons d'un groupe d'éléments en Python. Nous examinerons des ensembles de caractères et de nombres.

Nous utiliserons les méthodes combinations() et permutations() du module itertools de Python.

Commençons.

Permutations de données numériques

Pour utiliser la méthode permutations() du module itertools, nous devrons d'abord importer le module.

import itertools

Définissons maintenant un ensemble de nombres.

val = [1, 2, 3, 4]

Maintenant, pour obtenir la liste des permutations, utilisons la méthode permutations().

perm_set = itertools.permutations(val)

La ligne de code ci-dessus renvoie un objet itertools. Pour imprimer les différentes permutations, nous allons itérer sur cet objet.

for i in perm_set:
    print(i)

Nous obtenons le résultat comme :

1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1

Le code complet pour cette section est donné ci-dessous :

import itertools
 
val = [1, 2, 3, 4]
 
perm_set = itertools.permutations(val)
 
for i in perm_set:
    print(i)

Permutations d'une chaîne

Ensuite, nous allons apprendre comment obtenir les permutations des caractères d'une chaîne.

Nous utiliserons la méthode permutations(), mais cette fois nous passerons une chaîne de caractères comme argument.

import itertools
 
s = "ABC"

perm_set = itertools.permutations(s)
for val in perm_set:
    print(val)

Sortie :

('A', 'B', 'C')
('A', 'C', 'B')
('B', 'A', 'C')
('B', 'C', 'A')
('C', 'A', 'B')
('C', 'B', 'A')

Permutations de longueur fixe

Nous pouvons trouver des permutations d'un ensemble où nous ne prenons qu'un nombre spécifié d'éléments dans chaque permutation. Cela est similaire à nPr dans le domaine des mathématiques.

Le code pour trouver des permutations de longueur fixe est donné ci-dessous :

import itertools
 
val = [1, 2, 3, 4]
 
perm_set = itertools.permutations(val,2)
 
for i in perm_set:
    print(i)

Sortie :

(1, 2)
(1, 3)
(1, 4)
(2, 1)
(2, 3)
(2, 4)
(3, 1)
(3, 2)
(3, 4)
(4, 1)
(4, 2)
(4, 3)

Combinaisons de données numériques

Tout comme la méthode permutations(), nous pouvons utiliser combinations(), également sous itertools, pour obtenir les combinaisons d'un ensemble.

Lors de l'appel de combinations(), nous devons passer deux arguments, l'ensemble pour trouver les combinaisons et un nombre qui indique la longueur de chaque combinaison.

import itertools
 
val = [1, 2, 3, 4]
 
com_set = itertools.combinations(val, 2)
 
for i in com_set:
    print(i)

Sortie :

(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)

Combinaisons d'une chaîne

Nous pouvons également obtenir des combinaisons d'une chaîne. Pour obtenir les combinaisons d'une chaîne, utilisez le morceau de code suivant :

import itertools
 
s = "ABC"
 
com_set = itertools.combinations(s, 2)
 
for i in com_set:
    print(i)

Sortie :

('A', 'B')
('A', 'C')
('B', 'C')

Combinaisons avec remplacement

Il existe une autre méthode dans le module itertools appelée combinations_with_replacement(). Cette méthode prend également en compte la combinaison d'un nombre avec lui-même.

Voyons comment cela fonctionne.

Pour l'ensemble numérique

import itertools
 
val = [1, 2, 3, 4]
 
com_set = itertools.combinations_with_replacement(val, 2)
 
for i in com_set:
    print(i)

Sortie :

(1, 1)
(1, 2)
(1, 3)
(1, 4)
(2, 2)
(2, 3)
(2, 4)
(3, 3)
(3, 4)
(4, 4)

Vous pouvez voir la différence dans la sortie ci-dessus et la sortie de l'opération d'une combinaison normale. Ici, nous avons des combinaisons comme (1,1) et (2,2) qui ne sont pas présentes dans l'opération de combinaisons régulières.

Pour une chaîne

import itertools
 
val = "ABCD"
 
com_set = itertools.combinations_with_replacement(val, 2)
 
for i in com_set:
    print(i)

Sortie :

('A', 'A')
('A', 'B')
('A', 'C')
('A', 'D')
('B', 'B')
('B', 'C')
('B', 'D')
('C', 'C')
('C', 'D')
('D', 'D')

Conclusion

Ce tutoriel portait sur la recherche de permutations et de combinaisons d'un ensemble en python. Nous avons utilisé le module itertools disponible en python pour trouver les permutations et les combinaisons.