Exemples de comment trouver toutes les combinaisons possibles depuis une liste d'éléments en python:
Créer une liste
Soit la liste suivante
L = ['a','b','c','d']
de taille len(L) = 4
Trouver les combinaisons de taille 2
Pour trouver tout d'abord les toutes les combinaisons de taille 2, une solution est d'utiliser le module python itertools:
from itertools import combinations
for i in combinations(L,2):
print(i)
donne
('a', 'b')
('a', 'c')
('a', 'd')
('b', 'c')
('b', 'd')
('c', 'd')
On peut alors stocker les combinaisons dans une liste:
c2 = [i for i in combinations(L,2)]
print(c2)
donne
[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')]
Trouver les combinaisons de taille 3
Autre exemple de comment trouver toutes les combinaisons de taille 3
c3 = [i for i in combinations(L,3)]
print(c3)
donne
[('a', 'b', 'c'), ('a', 'b', 'd'), ('a', 'c', 'd'), ('b', 'c', 'd')]
Trouver toutes les combinaisons possibles
On peut alors trouver toutes les combinaisons possibles comme ceci:
comb = []
for n in range(0,len(L)+1):
comb.append([i for i in combinations(L,n)])
comb
qui donne
[[()],
[('a',), ('b',), ('c',), ('d',)],
[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')],
[('a', 'b', 'c'), ('a', 'b', 'd'), ('a', 'c', 'd'), ('b', 'c', 'd')],
[('a', 'b', 'c', 'd')]]
Trouver les combinaisons avec remplacement
Pour trouver les combinaisons avec remplacement on peut utiliser la fonction combinations_with_replacement. Exemple des combinaisons de taille 2 avec remplacement
from itertools import combinations_with_replacement
for i in combinations_with_replacement(L,2):
print(i)
donne
('a', 'a')
('a', 'b')
('a', 'c')
('a', 'd')
('b', 'b')
('b', 'c')
('b', 'd')
('c', 'c')
('c', 'd')
('d', 'd')