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 ) :

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
J'aimerai savoir s'il n'y a pas une fonction simple pour obtenir ce resultat ?

Merci d'avance !

Stéphane