Python itertools.combinations的结果

Pao*_*olo 10 python combinations python-itertools

我没有得到我应该从标题中的该函数获得的结果数量,所以我希望得到你的帮助.

查看文档 http://docs.python.org/library/itertools.html#itertools.combinations 应该是结果的数量

返回的商品数量是n!/ r!/(nr)!当0 <= r <= n时,当r> n时为零.

它适用于那里的例子

组合('ABCD',2) - > AB AC AD BC BD CD

因为n!/ r!/(nr)!= 4!/ 2!/ 2!= 6

但是,如果我尝试

combinations('ABCDEF', 3) --> AB AC AD AE AF BC BD BE BF CD CE CF DE DF EF
Run Code Online (Sandbox Code Playgroud)

我得到了15个结果.但是n!/ r!/(nr)!= 6!/ 3!/(6-3)!= 720/6/6 = 20

所以:Python Docs告诉我,我应该有20个结果,但我得到15个.

你能帮我理解我错过的东西吗?也许是我的数学中的东西,因为该公式应该是正确的,因为它在维基百科组合条目中

谢谢,P

unu*_*tbu 23

itertools.combinations应该返回一个包含20个项目的迭代器:

In [40]: len(list(itertools.combinations('ABCDEF',3)))
Out[40]: 20
Run Code Online (Sandbox Code Playgroud)

注意

In [41]: len(list(itertools.combinations('ABCDEF',2)))
Out[41]: 15
Run Code Online (Sandbox Code Playgroud)

并发布了输出

combinations('ABCDEF', 3) --> AB AC AD AE AF BC BD BE BF CD CE CF DE DF EF
Run Code Online (Sandbox Code Playgroud)

仅显示2个字母的组合.所以看起来你已经算了 combinations('ABCDEF', 2),而不是combinations('ABCDEF', 3).