python实现四个数字的全排列

可紊 提交于 2020-01-11 00:31:27

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

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)):
            print(lst)
        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)  
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!