python中所有不同k的组合数

问题描述

使用 python 3.8

列表 = [12,9,3,8,4,35,5,6,13,15]

我想找到组合的数量。但是不确定如何在每个位置的 k 不同时实现 N!/k!(n-k)!

所以我有 10 个位置,第一个位置我有 12 个不同的选择,第二个位置我有 9 个选择,依此类推..

我如何在 python 中计算它并想了解它背后的逻辑,因此资源会有所帮助。

编辑:我一定很困惑。每个元素的乘积将给出组合数。因为在每个位置它都有 K 驻留在其他位置。例如,就像从 12 条裤子、9 件衬衫、3 副眼镜、8 条袜子等中进行选择...

解决方法

据我所知,您可能想使用 numpy 的 prod 函数:

np.prod(list) # Returns 2122848000,that is to say 12*9*3*8*...*15

如果你在一个位置有 x 个选择,而在另一个位置有 y 个选择,那么你在 [x,y] 上总共有 x*y 个可能的组合。

,

不确定给定数据中 n and k 的值。我假设您正在尝试为列表中的每个元素找到可能的组合。这是我的建议,

import math
 
def factorial(n):
    return(math.factorial(n))
li = [12,9,3,8,4,35,5,6,13,15]
for element in li:
   numerator = factorial(N)
   denominator = factorial(k) * factorial(n-k)
   print(numerator / denominator )

P.S:不要将变量命名为 Python 关键字。