python 全排列

itertools模块现成的全排列:

for i in itertools.permutations('abcd',4):
    print ''.join(i)

相关全排列算法:

def perm(l):
    if(len(l)<=1):
        return [l]
    r=[]
    for i in range(len(l)):
        s=l[:i]+l[i+1:]
        p=perm(s)
        for x in p:
            r.append(l[i:i+1]+x)
    return r 

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-30 12:14:28

python 全排列的相关文章

python 全排列combinations和permutations函数

结果为: 显然,combinations方法重点在组合,permutations方法重在排列. 还有就是,combinations和permutations返回的是对象地址,原因是在python3里面,返回值已经不再是list,而是iterators(迭代器), 所以想要使用,只用将iterator 转换成list 即可, 还有其他一些函数返回的也是一个对象,需要list转换,比如 list(map())等 . ---------------------  作者:mishi_zcf  来源:CS

全排列问题(JAVA和Python实现)

问题:给定指定字符串(ABCCEF)输出其全排列.   运用分治的思想 JAVA:用TreeSet去重(且保持有序) import java.util.Set; import java.util.TreeSet; public class Main { static Set<String> result=new TreeSet<String>();//用来去掉重复的元素 public static void fullPermutation(char[] data, int flag

python非递归全排列

刚刚开始学习python,按照廖雪峰的网站看的,当前看到了函数这一节.结合数组操作,写了个非递归的全排列生成.原理是插入法,也就是在一个有n个元素的已有排列中,后加入的元素,依次在前,中,后的每一个位置插入,生成n+1个新的全排列.因为Python切割数组或者字符串,以及合并比较方便,所以,程序会节省很多代码. 1 def getArrayInsertCharToStr(STR,CHAR): 2 arr =[] 3 s_len = len(STR) 4 index =0 5 while inde

递归实现全排列python

python递归实现"abcd"字符串全排列 1.保持a不动,动bcd 2.保持b不动,动cd 3.保持c不动,动d def pailie(head="",string=""): if len(string)>1: for father_string in string: pailie(head+father_string,string.replace(father_string,"")) #关键一点:将头和尾全部传下去

用python实现全排列

#coding:utf-8 def permutation(inStr, pos, parentData): if len(inStr) == 0: return if len(inStr) == 1: print "{" + inStr + "}" return # here we need a new buffer to avoid to pollute the other nodes. buffer = [] buffer.extend(parentData)

python实现基础的深度优先搜索(DFS, depth first search)解决数的全排列问题

数的全排列,是一个很简单的问题,平时我们用笔用纸就能列出答案,但是数列位多的时候,排列的结果就有非常多了,例如有1,2,3,4,5,6,7,8,9这一个数列,有9个数字,则有9!(9的阶乘)这么多种结果.那是非常大的.今天我就来介绍用深度优先搜索来解决这个数的全排列的问题. 深度优先搜索 首先简单介绍一下深度优先搜索,深度优先搜索的关键在于当下该如何做,至于下一步如何做,就与当下做的一样.深度优先搜索的基本模型为: dfs(step): 判断边界:执行相关操作,返回 尝试每一种可能 for( i

Python入门

Python入门教程(个人日常学习记录,有不妥之处欢迎指正!后续更新,敬请期待...) 学习地址:http://www.imooc.com/learn/177 Python中数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.在Python中,能够直接处理的数据类型有以下几种: 一.整数 Python可以处理任意大小的整数,当然包括

Python高级特性:迭代器和生成器 -转

在Python中,很多对象都是可以通过for语句来直接遍历的,例如list.string.dict等等,这些对象都可以被称为可迭代对象.至于说哪些对象是可以被迭代访问的,就要了解一下迭代器相关的知识了. 迭代器 迭代器对象要求支持迭代器协议的对象,在Python中,支持迭代器协议就是实现对象的__iter__()和next()方法.其中__iter__()方法返回迭代器对象本身:next()方法返回容器的下一个元素,在结尾时引发StopIteration异常. __iter__()和next()

python第四天高级特性

切片操作 :如何取前三个元素,通过循环?可以通过切片操作 L[0:3],其中第一个参数表示切片的开始元素:第二个参数表示取到第几个元素结束:第三个参数表示取值时的跳跃间隔. 倒数切片:L[-2:]输出的是 8,9 tuple和list一样具有切片操作特性,字符串也是一种list,因此字符串也可以进行切片,只是操作的结果是字符串 迭代:只要是可迭代对象,不管它是list还是tuple集合 dict集合的迭代 1.key迭代 2.value迭代 3.key和value一起迭代 判断一个对象是否可以迭