Voilà mon problème . J'aimerai obtenir simplement toutes les combinaisons possibles (de p éléments) parmi une liste de n éléments . par exemple : soit la liste [ 1, "machin", [0, 1] ] pour laquelle je souhaite avoir la liste des combinaisons de deux éléments . En retour j'obtiendrais [[1, "machin"], [1, [0, 1]], ["machin", [0, 1]]] .
Je suis débutant en python . Je fais du python pour un MOD d'un jeu (CivilisationIV) . De ce fait je n'ai pas accès aux extentions (bibliothèques) de python .
J'ai reussi à obtenir ce que je voulais en recupérant la liste des indexs des combinaisons . J'ai préféré ne pas implémenter une fonction reccursive pour éviter une erreur du nombre de reccursion maximum . Voilà la fonction (qui ne marche pas pour p=0 ou 1 mais c'est sans importance ) :
J'aimerai savoir s'il n'y a pas une fonction simple pour obtenir ce resultat ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 def getCombi(p, n) : lResult = [] lListPreCombi = [] for iPass in range(n) : if iPass <= n - p : lListPreCombi += [[n - 1 - iPass]] for lPreCombi in lListPreCombi : minVal = min(lPreCombi) bResult = len(lPreCombi) == p-1 for i in range(n - 1 - iPass, minVal): combiTemp = [i] + lPreCombi if bResult : if not combiTemp in lResult : lResult.append(combiTemp) else : if not combiTemp in lListPreCombi : lListPreCombi.append(combiTemp) return lResult
Merci d'avance !
Stéphane
Partager