递归实现全排列(python)

刷题的时候遇到了就记录一下。细节看注释吧,非常简洁的代码。

def perm(lst):
    if len(lst) <= 1:  # 如果当前lst长度为1,停止递归,返回
        return [lst]
    result = []
    for i in range(len(lst)):
        s = lst[:i]+lst[i+1:]  # 每一次拿出一个元素
        p = perm(s)  # 得到剩下元素的全排列
        for x in p:
            result.append(lst[i:i+1] + x)  # 将该元素插到剩下元素全排列的各个列表的前面
    return result

你可能感兴趣的:(python)