python组合数_python计算排列组合数

这篇博客探讨了如何编写函数计算组合数,并引入了第三方模块scipy进行排列组合的计算。此外,还展示了使用math和自定义阶乘函数实现组合数和排列数的方法。最后,通过itertools模块列举了排列和组合的所有可能情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、编写函数计算组合数

def Combinatorial(n,i):

'''设计组合数'''

#n>=i

Min=min(i,n-i)

result=1

for j in range(0,Min):

#由于浮点数精度问题不能用//

result=result*(n-j)/(Min-j)

return result

if __name__ == '__main__':

print(int(Combinatorial(45,2)))

二、使用第三方模块scipy计算排列组合的具体数值

from scipy.special import comb, perm

#计算排列数

A=perm(3,2)

#计算组合数

C=comb(45,2)

print(A,C)

使用阶乘的方式求组合数

import math

def factorial_me(n):

'''建立求阶乘的函数'''

result = 1

for i in range(2, n + 1):

result = result * i

return result

def comb_1(n,m):

# 直接使用math里的阶乘函数计算组合数

return math.factorial(n)//(math.factorial(n-m)*math.factorial(m))

def comb_2(n,m):

# 使用自己的阶乘函数计算组合数

return factorial_me(n)//(factorial_me(n-m)*factorial_me(m))

def perm_1(n,m):

# 直接使用math里的阶乘函数计算排列数

return math.factorial(n)//math.factorial(n-m)

def perm_2(n,m):

# 使用自己的阶乘函数计算排列数

return factorial_me(n)//factorial_me(n-m)

if __name__ == '__main__':

print(factorial_me(6))

print(comb_1(45,2))

print(comb_2(45,2))

print(perm_1(45,2))

print(perm_2(45,2))

三、使用itertools列出排列组合的全部情况

from itertools import combinations, permutations

# 列举排列结果[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]

print(list(permutations([i for i in range(1,4)],2)))

#列举组合结果[(1, 2), (1, 3), (2, 3)]

print(list(combinations([1,2,3],2)))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值