python生成数据全排列算法

Life is short,use python!

1、自己写算法实现

#coding=utf-8

def genPermutation(n):
    listResult = [[1]]
    for curIdx in range(2, n+1):
        listTemp = []
        for listData in listResult:
            for data_idx in range(len(listData)+1):
                s = list(listData)
                s.insert(data_idx, curIdx)
                listTemp.append(s)
            pass

        listResult = listTemp

    listResult.reverse()
    for item in listResult:
        for data in item:
            print data,
        print
    pass
    print "result num = %d"%len(listResult)

if __name__=="__main__":
    genPermutation(3)

输出

1 2 3
1 3 2
3 1 2
2 1 3
2 3 1
3 2 1
result num = 6

原理,n阶全排列是在n-1阶全排列的基础上从0,到n-1每个位置插入进去。

例如:

2阶全排列:

1 2
2 1

在0, 1, 2的位置插入3,变成3阶全排列

1 2 3
1 3 2
3 1 2
2 1 3
2 3 1
3 2 1

2、itertools函数实现

#coding=utf-8
import itertools

if __name__=="__main__":
    for i in itertools.permutations('1234',4):
        print ''.join(i)

猜你喜欢

转载自blog.csdn.net/haart/article/details/86698837
今日推荐