Python itertools.результаты комбинаций
Я не получаю количество результатов, которые я должен получить от этой функции в названии, поэтому я надеюсь на вашу помощь.
просмотр документов http://docs.python.org/library/itertools.html#itertools.combinations количество результатов должно быть
количество возвращаемых элементов равно N! - Р! / (н-р)! когда 0 n.
и он работает для примера там
комбинации ('ABCD', 2) -- > AB AC AD BC BD CD
потому что n! - Р! / (н-р)! = 4! / 2! / 2! = 6
но если я попробую
combinations('ABCDEF', 3) --> AB AC AD AE AF BC BD BE BF CD CE CF DE DF EF
Я получаю эти 15 результатов. Но н! - Р! / (н-р)! = 6! / 3! / (6-3)! = 720 / 6 / 6 = 20
Итак: документы Python сказали мне, что у меня должно быть 20 результатов, но я получаю 15.
не могли бы вы помочь мне понять, что мне не хватает? Может быть, это что-то в моей математике, так как эта формула должна быть правильной, как и в the сочетание Википедии
спасибо, П.
1 ответов
itertools.комбинации должны возвращать итератор с 20 элементами:
In [40]: len(list(itertools.combinations('ABCDEF',3)))
Out[40]: 20
отметим, что
In [41]: len(list(itertools.combinations('ABCDEF',2)))
Out[41]: 15
и вывод опубликован
combinations('ABCDEF', 3) --> AB AC AD AE AF BC BD BE BF CD CE CF DE DF EF
показывает только комбинации из 2 букв. Похоже, вы вычислили
combinations('ABCDEF', 2)
, а не combinations('ABCDEF', 3)
.