美文网首页
利用Python枚举所有的排列情况

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

作者: 数据人阿多 | 来源:发表于2020-06-07 23:07 被阅读0次

概念

排列组合是组合学最基本的概念。
排列(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*(n-1)*(n-2)*……*1
(数学其实就是这样,并没有什么高深的公式,就是靠一点一点简单的公式累积起来,只要逻辑严谨,推导过程详细,小白也能看得懂)

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

通用公式如下所示:

排列计算公式

Python实现

排列
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枚举所有的排列情况

    概念 排列组合是组合学最基本的概念。排列(Permutation),就是指从给定个数的元素中取出指定个数的元素进行...

  • 《算法竞赛入门经典》第七章学习笔记

    枚举排列 生成1~n的排列 生成可重集的排列 利用STL生成排列 子集生成 增量构造法 位向量法 二进制法

  • Python实现常见的回文字符串算法

    回文 利用python 自带的翻转 函数reversed() 自己实现 最长的回文子串 暴力破解 暴力破解,枚举所...

  • 枚举排列

    过程描述: 1->1,2->1,2,31,3->1,3,2当i =1 循环递归压栈在第二次的时候会有 1,2和1,...

  • 枚举排列

    生成1-n的排列 具体题目为,输入整数n,按字典序大小从小到大顺序输出前n个数的所有排列。例如输入n=3,则要求得...

  • 枚举、元类和错误调试

    枚举 在各种编程语言中常用的枚举类型在python中当然不例外的也是有的,创建一个枚举非常简单,如下: 创建了一个...

  • 【Java基础】- 枚举

    枚举应用场景 有的时候一个类的对象是有限且固定的,这种情况下我们使用枚举类就比较方便 枚举与静态类 枚举类更加直观...

  • 枚举(enum)

    概念:枚举(列举所有的情况)限定值,保证取值的安全性

  • 《写给大忙人看到Swift》第3章.对象和类 阅读笔记

    3.1 枚举 通过枚举,可以利用一组预定义的值创建一个自定义数据类型。 默认情况下,Swift中的enum并不像其...

  • 枚举 函数 结构体 类

    import Foundation //枚举 /* enum 枚举名:值类型 { case 枚举情况 = 初始值 ...

网友评论

      本文标题:利用Python枚举所有的排列情况

      本文链接:https://www.haomeiwen.com/subject/cgnhtktx.html