例子: 求列表l = [1,2,3]的全排列
l = [1,2,3]
全排列有: [1,2,3] , [1,3,2], [2,1,3],[2,3,1],[3,1,2],[3,2,1]
方法1:
#函数:permutation():
如果 列表中的元素只有一个 我们就直接返回那个列表
否则创建一个新的空列表 , 我们依次选取列表中的一个元素作为排列列表的头, 之后把剩下的元素组成一个新的列表进行全排列(这里我们用了python中的切片)
【1,2,3】,【1,3,2】
【2,1,3】,【2,3,1】
【3,1,2】,【3,2,1】
def permutation(S,n):
if n <=1:
return S
else:
result = []
for i in range(n):
ch = S[i]
rest = S[0:i] + S[i+1:n]
for s in permutation(rest,n-1):
result.append(ch + s)
return result
result = permutation(['1','2','3'],3);
print(result)
方法2:
其实就是 把每一个把每一个元素都依次放在头部然后进行排列
swap()函数就是对列表中的元素进行位置互换
【1,2,3】 、【1,3,2】
【2,1,3】、【2,3,1】
【3,2,1】、 【3,1,2】
def swap(i,j,nums):
temp = nums[i]
nums[i]=nums[j]
nums[j]=temp
def qpl(nums , l, r):
if (l == r):
print(nums)
for j in range(l,r+1):
swap(j,l,nums)
qpl(nums, l + 1, r)
swap(j,l,nums)
qpl([1,2,3],0,2)
方法三:
python自带
from itertools import permutations
print(list(permutations([1,2,3])))