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 combinationsfor 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_replacementfor 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')
