Python itertools.résultats des combinaisons
Je ne reçois pas le nombre de résultats que je devrais obtenir à partir de cette fonction dans le titre, donc j'espère en votre aide.
en regardant les Docs http://docs.python.org/library/itertools.html#itertools.combinations le nombre de résultats doit être
le nombre d'articles retournés est n! / r! / (n-r)! quand 0 < = r n.
Et ça marche pour l'exemple, il
combinaisons ('ABCD', 2) -- > AB AC AD BC BD CD
parce que n! / r! / (n-r)! = 4! / 2! / 2! = 6
Mais si j'essaie
combinations('ABCDEF', 3) --> AB AC AD AE AF BC BD BE BF CD CE CF DE DF EF
j'ai ces 15 résultats. Mais n! / r! / (n-r)! = 6! / 3! / (6-3)! = 720 / 6 / 6 = 20
alors: les docteurs Python m'ont dit que je devrais avoir 20 résultats, mais j'en ai 15.
pouvez-vous m'aider à comprendre ce que je rate? Peut-être est quelque chose dans mes maths, car cette formule devrait être juste comme il est dans Wikipedia entrée d'une Combinaison
Merci, P.
1 réponses
itertools.les combinaisons devraient renvoyer un itérateur avec 20 éléments:
In [40]: len(list(itertools.combinations('ABCDEF',3)))
Out[40]: 20
Notez que
In [41]: len(list(itertools.combinations('ABCDEF',2)))
Out[41]: 15
et la sortie posté
combinations('ABCDEF', 3) --> AB AC AD AE AF BC BD BE BF CD CE CF DE DF EF
montre seulement les combinaisons de 2 lettres. Il semble que vous ayez calculé
combinations('ABCDEF', 2)
, pas combinations('ABCDEF', 3)
.