Python排列组合的计算方法

Posted ZSYL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python排列组合的计算方法相关的知识,希望对你有一定的参考价值。

1. math.comb()

数学模块Python中的Math库包含许多数学运算,可以使用该模块轻松执行。math.comb()Python中的method方法用于获取从n个项目中选择k个项目(不重复且无顺序)的方法数量。它本质上评估为 n!/(k!*(n-k)!) 它也被称为二项式系数,因为它等效于表达式(1 + x)的多项式展开中的k-th项的系数n。

此方法是Python版本3.8中的新增功能。

用法: math.comb(n, k)

参数:

  • n:非负整数
  • k:非负整数

返回:一个整数值,表示从n个项目中选择k个项目(无重复且无顺序)的方式数量。

# Python Program to explain math.comb() method 
  
# Importing math module 
import math 
  
n = 10
k = 2
  
# Get the number of ways to choose 
# k items from n items without 
# repetition and without order 
nCk = math.comb(n, k) 
print(nCk) 
  
n = 5
k = 3
  
# Get the number of ways to choose 
# k items from n items without 
# repetition and without order 
nCk = math.comb(n, k) 
print(nCk)

输出:

45
10

代码2:当k> n时

# Python Program to explain math.comb() method 
  
# Importing math module 
import math 
  
# When k > n  
# math.comb(n, k) returns 0. 
n = 3
k = 5
  
# Get the number of ways to choose 
# k items from n items without 
# repetition and without order 
nCk = math.comb(n, k) 
print(nCk)

输出:

0

2. scipy 计算排列组合的具体数值

A 3 2 A^2_3 A32=6, C 3 2 C^2_3 C32=3

>> from scipy.special import comb, perm
>> perm(3, 2)   # 有序
6.0
>> comb(3, 2)  # 无序
3.0

3. itertools 获取排列组合的全部情况数

>> from itertools import combinations, permutations
>> permutations([1, 2, 3], 2)
<itertools.permutations at 0x7febfd880fc0>
                # 可迭代对象
>> list(permutations([1, 2, 3], 2))
[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]

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

参考link

以上是关于Python排列组合的计算方法的主要内容,如果未能解决你的问题,请参考以下文章

Python 排列组合

python中的排列组合

itertools 排列组合

有效地计算组合和排列

【基础】Python3小程序_之排列组合

问个关于JAVA排列组合代码的问题