python - 试图找到所有可能的组合和分组

标签 python python-2.7

我一直在尝试使用 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/

相关文章:

python - 什么是 C++ 相当于 'r' 前缀在 Python 中的字符串?

python - 如何在字典中获取多个最大键值?

python - Flask 蓝图无法导入模块

python - Tastypie:不要发送资源的整个 uri(只是 id)

python - 在一个颜色条上绘制两个范围

python : Fibonacci sequence using range(x, y,n)

Python:创建空的 pandas 数据框并动态地将元素添加到其列中

python - n 的第 N 个斐波那契数等于 10^19?

python - 并行Python : 4 threads have same speed as 2 threads

python - couchbase 已安装,但仍然出现导入错误(Pyinstaller)