问题描述
使用 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 关键字。