为了账号安全,请及时绑定邮箱和手机立即绑定

python中有数学nCr函数吗?

python中有数学nCr函数吗?

我想看看在python中使用数学库内置的是nCr(n选择r)函数:我知道这可以编程,但我想我会先查看它是否已经内置。
查看完整描述

2 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

以下程序nCr以有效的方式计算(与计算因子等相比)


import operator as op

from functools import reduce


def ncr(n, r):

    r = min(r, n-r)

    numer = reduce(op.mul, range(n, n-r, -1), 1)

    denom = reduce(op.mul, range(1, r+1), 1)

    return numer / denom


查看完整回答
反对 回复 2019-09-19
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

你想要迭代吗?itertools.combinations。常用用法:


>>> import itertools

>>> itertools.combinations('abcd',2)

<itertools.combinations object at 0x01348F30>

>>> list(itertools.combinations('abcd',2))

[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')]

>>> [''.join(x) for x in itertools.combinations('abcd',2)]

['ab', 'ac', 'ad', 'bc', 'bd', 'cd']

如果您只需要计算公式,请使用math.factorial:


import math


def nCr(n,r):

    f = math.factorial

    return f(n) / f(r) / f(n-r)


if __name__ == '__main__':

    print nCr(4,2)

在Python 3中,使用整数除法//而不是/为了避免溢出:


return f(n) // f(r) // f(n-r)


产量

6


查看完整回答
反对 回复 2019-09-19
  • 2 回答
  • 0 关注
  • 744 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信