python标准算法实现数组全排列的方法

本文实例讲述了python标准算法实现数组全排列的方法,代码来自国外网站。分享给大家供大家参考。具体分析如下:

从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。

def Mideng(li):
  if(type(li)!=list):
    return
  if(len(li)==1):
    return [li]
  result=[]
  for i in range(0,len(li[:])):
    bak=li[:]
    head=bak.pop(i) #head of the recursive-produced value
    for j in Mideng(bak):
      j.insert(0,head)
      result.append(j)
  return result
def MM(n):
  if(type(n)!=int or n<2):
    return
  return Mideng(list(range(1,n)))

调用方法:

MM(6)

希望本文所述对大家的Python程序设计有所帮助。

(0)

相关推荐

  • python对数组进行反转的方法

    本文实例讲述了python对数组进行反转的方法.分享给大家供大家参考.具体实现方法如下: arr = [1,2,3] arr.reverse() print(arr) 输出: [3,2,1] 希望本文所述对大家的Python程序设计有所帮助.

  • python创建关联数组(字典)的方法

    本文实例讲述了python创建关联数组(字典)的方法.分享给大家供大家参考.具体分析如下: 关联数组在python中叫字典,非常有用,下面是定义字典的两种方法 # Dictionary with quoted or variable keys d1 = {"name":"donuts","type":"chocolate","quantity":10} # Dictionary with fixed key

  • python实现将元祖转换成数组的方法

    本文实例讲述了python实现将元祖转换成数组的方法.分享给大家供大家参考.具体分析如下: python的元祖使用一对小括号表示的,元素是固定的,如果希望添加新的元素,可以先将元祖转换成数组列表,再进行操作 colour_tuple = ("Red","Green","Blue") colour_list = list(colour_tuple) assert colour_list == ["Red","Green

  • 一些Python中的二维数组的操作方法

    需要在程序中使用二维数组,网上找到一种这样的用法: #创建一个宽度为3,高度为4的数组 #[[0,0,0], # [0,0,0], # [0,0,0], # [0,0,0]] myList = [[0] * 3] * 4 但是当操作myList[0][1] = 1时,发现整个第二列都被赋值,变成 [[0,1,0], [0,1,0], [0,1,0], [0,1,0]] 为什么...一时搞不懂,后面翻阅The Python Standard Library 找到答案 list * n->n sha

  • python实现合并两个数组的方法

    本文实例讲述了python实现合并两个数组的方法.分享给大家供大家参考.具体如下: python合并两个数组,将两个数组连接成一个数组,例如,数组 a=[1,2,3] ,数组 b=[4,5,6],连接后:[1,2,3,4,5,6] 方法1 a=[1,2,3] b=[4,5,6] a=a+b 方法2 a=[1,2,3] b=[4,5,6] a.extend(b) 希望本文所述对大家的Python程序设计有所帮助.

  • python将字符串转换成数组的方法

    python将字符串转换成数组的方法.分享给大家供大家参考.具体实现方法如下: #----------------------------------------- # Name: string_to_array.py # Author: Kevin Harris # Last Modified: 02/13/04 # Description: This Python script demonstrates # how to modify a string by # converting it

  • python实现数组插入新元素的方法

    本文实例讲述了python实现数组插入新元素的方法.分享给大家供大家参考.具体如下: li=['a', 'b'] li.insert(0,"c") 输出为:['c', 'a', 'b'] li=['a', 'b'] li.insert(-1,"c") 输出为:[ 'a','c', 'b'] 希望本文所述对大家的Python程序设计有所帮助.

  • python数组复制拷贝的实现方法

    本文实例讲述了python数组复制拷贝的实现方法.分享给大家供大家参考.具体分析如下: python中直接通过等号赋值实际上只是引用地址的传递 如: a = [1,2,3,4,5] b=a 当a的值改变时,b的值也会随之改变 如果希望b和a没有关系,可以通过下面的方法 a = [1,2,3,4,5] b=a[:] 这样a和b就是两个完全独立的数组,互相不会影响 希望本文所述对大家的Python程序设计有所帮助.

  • python标准算法实现数组全排列的方法

    本文实例讲述了python标准算法实现数组全排列的方法,代码来自国外网站.分享给大家供大家参考.具体分析如下: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列. def Mideng(li): if(type(li)!=list): return if(len(li)==1): return [li] result=[] for i in range(0,len(li[:])): bak=li[:] h

  • python通过yield实现数组全排列的方法

    本文实例讲述了python通过yield实现数组全排列的方法.分享给大家供大家参考.具体分析如下: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列. 这段代码用到了yield方法,全排列速度加倍 def perm(arr, pos = 0): if pos == len(arr): yield arr for i in range(pos, len(arr)): arr[pos], arr[i] = a

  • python回溯法实现数组全排列输出实例分析

    本文实例讲述了python回溯法实现数组全排列输出的方法.分享给大家供大家参考.具体分析如下: 全排列解释:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列. from sys import stdout #code from http://www.jb51.net/ def perm(li, start, end): if(start == end): for elem in li: stdout.wr

  • Golang排列组合算法问题之全排列实现方法

    本文实例讲述了Golang排列组合算法问题之全排列实现方法.分享给大家供大家参考,具体如下: [排列组合问题] 一共N辆火车(0<N<10),每辆火车以数字1-9编号,要求以字典序排序输出火车出站的序列号. 输入: 包括N个正整数(0<N<10),范围为1到9,数字之间用空格分割,字符串首位不包含空格. 输出: 输出以字典序排序的火车出站序列号,每个编号以空格隔开,每个输出序列换行. 样例输入: 1 2 3 样例输出: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3

  • C#通过yield实现数组全排列的方法

    本文实例讲述了C#通过yield实现数组全排列的方法.分享给大家供大家参考.具体分析如下: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列. static void Swap<T>(ref T a, ref T b) { T t = a; a = b; b = t; } static IEnumerable<int[]> Perm(int[] arr, int pos) { if (pos

  • Java实现字符数组全排列的方法

    本文实例讲述了Java实现字符数组全排列的方法.分享给大家供大家参考,具体如下: import org.junit.Test; public class AllSort { public void permutation(char[] buf, int start, int end) { if (start == end) {// 当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可 for (int i = 0; i <= end; i++) { System.out.print(bu

  • python numpy库中数组遍历的方法

    1.对于一维数组,可以有: 2. 对于二维数组:考虑可将其看作为矩阵,故可以如下书写二重遍历 这里外层循环的是二维数组A的行,内层则是列 同时c的作用:不想用肉眼直接观察得到行列数,故用A.shape方法获得(2,6)的元组,然后改变数据类型为列表,然后直接使用. 3.对于三维数组,如: 有两个二维数组,二维数组中又有三个长度为4的数组.可以这样子循环: 又len(f) = 2, len(f[0]) = 3, len(f[0][0]) = 4;故可以再一次改进代码,这里就不写了. f[0]:三维

  • python标准日志模块logging的使用方法

    最近写一个爬虫系统,需要用到python的日志记录模块,于是便学习了一下.python的标准库里的日志系统从Python2.3开始支持.只要import logging这个模块即可使用.如果你想开发一个日志系统, 既要把日志输出到控制台, 还要写入日志文件,只要这样使用: 复制代码 代码如下: import logging# 创建一个loggerlogger = logging.getLogger('mylogger')logger.setLevel(logging.DEBUG)# 创建一个ha

  • Python标准库inspect的具体使用方法

    inspect模块用于收集python对象的信息,可以获取类或函数的参数的信息,源码,解析堆栈,对对象进行类型检查等等,有几个好用的方法: Doc:这样写到 The inspect module provides several useful functions to help get information about live objects such as modules, classes, methods, functions, tracebacks, frame objects, an

  • python Dijkstra算法实现最短路径问题的方法

    本文借鉴于张广河教授主编的<数据结构>,对其中的代码进行了完善. 从某源点到其余各顶点的最短路径 Dijkstra算法可用于求解图中某源点到其余各顶点的最短路径.假设G={V,{E}}是含有n个顶点的有向图,以该图中顶点v为源点,使用Dijkstra算法求顶点v到图中其余各顶点的最短路径的基本思想如下: 使用集合S记录已求得最短路径的终点,初始时S={v}. 选择一条长度最小的最短路径,该路径的终点w属于V-S,将w并入S,并将该最短路径的长度记为Dw. 对于V-S中任一顶点是s,将源点到顶点

随机推荐