利用Python枚举所有的排列情况

概念

排列组合是组合学最基本的概念。
排列(Permutation),就是指从给定个数的元素中取出指定个数的元素进行排序
组合(Combination)则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序

比如有1、2、3这三个数字,要进行排列,则一共有以下6种情况:

  • 1,2,3
  • 1,3,2
  • 2,1,3
  • 2,3,1
  • 3,1,2
  • 3,2,1

数字比较少的时候,咱们可以直接手动一一列举出来,如果有n个数字,怎么快速计算排列数呢?咱们可以靠已有的认知,自己写出公式。

  • 第1个数字有多少种情况
    从n个数字里面,随机选一个数字,那么肯定有n种情况,比如:箱子里面有n个球,然后随机从箱子里面抓一个球,那么有n种情况

  • 第2个数字有多少种情况
    前面已经取出一个数字,现在剩下n-1个数字,那么就有n-1种情况

  • 第3个数字有多少种情况
    同理,前面已经取出二个数字,剩下n-2个数字,那么就有n-2种情况

  • …………………………

  • 第n个数字有多少种情况
    前面已经取出n-1个数字,剩下1个数字,就只能取剩下的1个数字,别无选择,那么就只能有这1种情况

综合以上情况,那就是
(数学其实就是这样,并没有什么高深的公式,就是靠一点一点简单的公式累积起来,只要逻辑严谨,推导过程详细,小白也能看得懂)

以上是对给的所有数字进行排列的情况,而更一般的情况是,给n个球,从中选择m个,计算有多少种排列情况,道理和上面一样,下面直接给出计算公式,不再赘述。

通用公式如下所示:

利用Python枚举所有的排列情况_第1张图片
排列计算公式

Python实现

利用Python枚举所有的排列情况_第2张图片
排列
from itertools import permutations

a=list(range(3))

list(permutations(a))

list(permutations(a,2))

list(permutations(range(3)))

list(permutations(range(3),2))

你可能感兴趣的:(利用Python枚举所有的排列情况)