python实现四个数字的全排列

首先我们使用常规做法,循环交换完成。

lst = [1, 3, 5, 8]

for i in range(0, len(lst)):
    lst[i], lst[0] = lst[0], lst[i]
    for j in range(1, len(lst)):
        lst[j], lst[1] = lst[1], lst[j]
        for h in range(2, len(lst)):
            lst[h], lst[2] = lst[2], lst[h]         
            print(lst)
            lst[h], lst[2] = lst[2], lst[h]    
        lst[j], lst[1] = lst[1], lst[j]
    lst[i], lst[0] = lst[0], lst[i]

如果列表较长,元素较多,以上常规方法实现起来就比较吃力了,以下我们采用递归方式实现。

def permutations(position):
    if position == len(lst) - 1:
        print(lst)
    else:
        for index in range(position, len(lst)):
            lst[index], lst[position] = lst[position], lst[index]
            permutations(position+1)
            lst[index], lst[position] = lst[position], lst[index]
permutations(0)  

你可能感兴趣的:(python实现四个数字的全排列)