python全排列

1.可以直接调用itertools
2.递归写法
[1,2,3] 
第一位1和第一位1互换后:[1,2,3]
此时第一位1固定,剩下[2,3]递归有[1,2,3] [1,3,2]两种排列;互换的再换回保持原样
第二位2和第一位1互换后:[2,1,3]
此时第一位2固定,剩下[1,3]递归有[2,1,3] [2,3,1]两种排列;互换的再换回保持原样
第三位3和第一位1互换后:[3,2,1]
此时第一位3固定,剩下[2,1]递归有[3,1,2] [3,2,1]两种排列;

print '1 instant:'
for i in itertools.permutations([1,2,3],3): print i
print '2 recursive:'
def permut(num,begin,end):
    if begin==end:
        print num
    else:
        i=begin
        for j in xrange(begin,end):
            num[j],num[i]=num[i],num[j]
            permut(num,begin+1,end)
            num[j],num[i]=num[i],num[j]
n=[1,2,3]  
permut(n,0,len(n))  
'''
output:
(1, 2, 3)
(1, 3, 2)
(2, 1, 3)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)
'''

猜你喜欢

转载自blog.csdn.net/acttell/article/details/80039972