我一直在尝试使用 excel 解决以下问题,并意识到这可能更适合 Python,但是,我不确定从哪里开始,我对 Python 只有基本的了解。你们将如何解决这个问题?
有 6 种咖啡和 10 种 flavor 镜头,您可以在每种咖啡中放一、二或三杯。基于此,我想知道(并列出)独特的 flavor 组合,以及不喝同一杯咖啡可以喝多久。
最佳答案
使用 itertools.combinations
您可以轻松获得所有可能的不同口味组合:
from itertools import combinations
shots = range(1,11)
N = 3
coms = [c for n in range(1, N+1) for c in combinations(shots, n)]
coms
的长度将为您提供组合的数量,在 6 种口味和一、二或三枪的情况下为 175。
添加到咖啡中的 flavor 组合数量仅为 6 * 175 = 1050
。
编辑
此外(顺便说一句)您甚至不需要通过编程来完成此操作。假设你有 n 个元素,你想计算出有多少种不同的方法可以从中选择 k 个,那么这个数字由 Binomial coefficient 给出。可以用 C(n, k) = n!/(k!*(n-k)!)
轻松计算,
在您的例子中,您有 n=10 和 k=1、k=2 和 k=3。因此你的解决方案是:
C(10, {1, 2, 3}) = C(10, 3) + C(10, 2) + C(10, 1)
= 10!/(3!*(10-3)!) + 10!/(2!*(10-2)!) + 10!/(1!*(10-1)!)
= 175
Total = 175 * 6 = 1050
关于python - 试图找到所有可能的组合和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25767229/