你好有没有办法在python中做5C2?我是python中的菜鸟,我无法在任何地方找到答案。答案必须是10.我一直试图玩,但我只能得到错误,这是我需要得到的代码10
from itertools import *
print(combinations(5,2))
它给了我:
TypeError: 'int' object is not iterable
感谢任何帮助
答案 0 :(得分:1)
In [35]: def choose(n,k):
....: return math.factorial(n)/(math.factorial(k)*math.factorial(n-k))
....:
In [36]: choose(5,3)
Out[36]: 10.0
别忘了导入数学
答案 1 :(得分:1)
由于您明确要求使用itertools 查找组合的数量,解决方案将是
import itertools
print len(list(itertools.combinations(range(5),2)))
让我解释一下:itertools.combinations(iterator, k)
将迭代器(可以是列表)和从该列表中选择的元素数作为参数。您可以直接返回该列表,而不是回答可以从该列表中绘制多少k
个元组元组的组合的问题。
因此,给定一个n
元素列表,从中可以绘制所有k
- 元组并查看该列表的长度,为您提供二项式系数。
当然,有更简单的方法来计算二项式系数,例如, scipy.special.binom
import scipy
print scipy.special.binom(5,2)
答案 2 :(得分:0)
如果目标是求组合数(n选k)为一个数,在我看来,以下是最简单的方法,如果可以使用Python 3.8。
从 Python 3.8 开始,数学模块中有 math.comb(n, k)
函数。
import math
print(math.comb(5,2))
给予
10
一些参考:
https://www.w3schools.com/python/ref_math_comb.asp
https://www.geeksforgeeks.org/python-math-comb-method/