我没有得到我应该从标题中的该功能获得的结果数量,所以我希望得到你的帮助。
查看文档 http://docs.python.org/library/itertools.html#itertools.combinations 结果的数量应该是
返回的商品数量是n! / r! /(n-r)!当0 <= r <= n或 当r> 0时为零Ñ
它适用于那里的例子
组合('ABCD',2) - &gt; AB AC AD BC BD CD
因为n! / r! /(n-r)! = 4! / 2! / 2! = 6
但如果我尝试
combinations('ABCDEF', 3) --> AB AC AD AE AF BC BD BE BF CD CE CF DE DF EF
我得到了15个结果。 但是n! / r! /(n-r)! = 6! / 3! /(6-3)! = 720/6/6 = 20
所以:Python Docs告诉我,我应该有20个结果,但我得到15个。
你能帮我理解我错过的东西吗?也许是我数学中的一些东西,因为那个公式应该是正确的,因为它在Wikipedia Combination entry
中谢谢, P上。
答案 0 :(得分:23)
itertools.combinations应该返回一个包含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)
。