好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

python使用递归解决全排列数字示例

第一种方法:递归

代码如下:


def perms(elements):
if len(elements) yield elements
else:
for perm in perms(elements[1:]):
for i in range(len(elements)):
yield perm[:i] + elements[0:1] + perm[i:]

for item in list(perms([1, 2, 3,4])):
print item


结果

代码如下:


[1, 2, 3, 4]
[2, 1, 3, 4]
[2, 3, 1, 4]
[2, 3, 4, 1]
[1, 3, 2, 4]
[3, 1, 2, 4]
[3, 2, 1, 4]
[3, 2, 4, 1]
[1, 3, 4, 2]
[3, 1, 4, 2]
[3, 4, 1, 2]
[3, 4, 2, 1]
[1, 2, 4, 3]
[2, 1, 4, 3]
[2, 4, 1, 3]
[2, 4, 3, 1]
[1, 4, 2, 3]
[4, 1, 2, 3]
[4, 2, 1, 3]
[4, 2, 3, 1]
[1, 4, 3, 2]
[4, 1, 3, 2]
[4, 3, 1, 2]
[4, 3, 2, 1]

第二种方法:python标准库

代码如下:


import itertools
print list(itertools.permutations([1, 2, 3,4],3))

源代码如下:

代码如下:


#coding:utf-8
import itertools
print list(itertools.permutations([1, 2, 3,4],3))

def perms(elements):
if len(elements) yield elements
else:
for perm in perms(elements[1:]):
for i in range(len(elements)):
yield perm[:i] + elements[0:1] + perm[i:]

for item in list(perms([1, 2, 3,4])):
print item

查看更多关于python使用递归解决全排列数字示例的详细内容...

  阅读:39次