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