Skip to main content
 首页 » 编程设计

python之itertools.combinations 如何在 Python 中扩展

2025年05月04日14三少

我正在使用蛮力方法来尝试找到拼图扩展的组合。

我正在尝试获取大量组合,然后测试每个组合以查看它们是否符合特定条件。 我使用 Python 的优秀 itertools 生成组合,本质上这给了我一个迭代器,我可以检查并测试每个组合。

这很快返回并给了我 91390 组合来检查:

itertools.combinations(range(1, 40), 4) 

这需要几分钟,然后给我 198792594 组合进行测试:

itertools.combinations(range(1, 122), 5) 

当我进入下一个级别时,我需要这个问题的答案:

itertools.combinations(range(1, 365), 6) 

当我进入一组 364 的 6 路组合时……需要很长时间。 年龄。我天生就要求大量的组合吗?它如何扩展?

请您参考如下方法:

您要求 365 选择 6 = (365 * 364 * ... * 360)/(6 * 5 * ... * 2 * 1) = 3,151,277,509,380 组合。这是一个很多。在 Python 桌面上循环超过 3 万亿个元素是不可能的——绝对不可能。

如果您只是想知道应该有多少,直接计算的公式是 on Wikipedia .

编辑:我刚刚查看了这个问题,您似乎正试图通过考虑所有可能的权重组合并查看它们是否有效来解决该问题。在这种情况下,暴力破解显然行不通——您必须想出更聪明的解决方案。