python中的排列组合

Python013

python中的排列组合,第1张

在日常的工作学习中,我们肯定会遇到排列组合问题,比如,在5种颜色的球中,任意取3个,共有多少种组合方式,这也包括有放回和无放回抽样。

在python中,自带的排列组合函数,都在python的指导工具包itertools中。

product 笛卡尔积(有放回抽样排列)

permutations 排列(不放回抽样排列)

combinations 组合,没有重复(不放回抽样组合)

combinations_with_replacement 组合,有重复(有放回抽样组合)

python3中返回的为对象,可以通过迭代读取将值输出。

end

以上四种情况均为最常见的排列组合,从有无顺序和是否重复两个维度进行思考,建议理解并背诵。

在使用python计算排列组合之前,需要计算阶乘,可以有两种方式,一是使用math库中的factorial函数,二是使用如下的递归函数。

按照排列的公式:

按照组合的公式:

3.1 生日问题

假设一个班级中共有n个人,一年有365天,其中每天作为生日的概率是相等的,那么其中至少有两个人的生日在同一天的概率是多少?

此题属于全排列问题,需要反向思考,写出公式之后直接输入到python中计算

3.2 大乐透问题

大乐透的玩法是这样的,从35个红球中选择5个,从12个红球中选择2个,如果全中,那就中一等奖。那么请问,中一等奖的概率是多少?

此题属于组合问题,中奖的可能性为一种,因此分子为1,分母为所有的组合情况。

根据数据之间的关系,组合数据类型可以分为3类,分别是:序列类型、集合类型和映射类型。组合数据类型更能够将多个同类或不同类型组织起来,通过单一的表示使数据更有序、更容易。

序列类型是一个元素向量,元素之间的存在先后关系,通过序号访问,元素之间不排他。

集合类型是一个元素类型,元素之间无序,相同元素在集合中唯一存在。

映射类型是“键-值”数据项的组合,每个元素是一个键值对,表示为(key, value)。

推荐教程:python教程以上就是小编分享的关于python中的组合数据类型可以分为哪三类的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!