列表的python递归排列

时间:2014-06-01 04:49:58

标签: python algorithm recursion permutation

我想编写一个递归函数p(),它接受一个列表并返回输入列表的所有排列的列表。

实施例

>>>permutations([1, 2,3])
[[1, 2,3],[2, 1, 3],[2, 3, 1],[1, 3, 2],[3, 1, 2],[3, 2, 1]]

我希望递归调用子列表l [1:]以获取原始输入列表中除第一个元素l [0]之外的所有元素的所有排列,然后通过添加l [[]生成原始列表的排列。 0]到那些排列。

到目前为止,我有

def p(list):
    if len(list)==1 or 0:
        return list
    result = []
    for i in list[1:]:
        result.append(i + list[0])
    result += [list]
    return result

但我知道有些事情是错的......请帮忙吗?

1 个答案:

答案 0 :(得分:0)

我不知道这是你想要的,但要检查出来

from itertools import permutations

l = [1, 2, 3, 4, 5]
new_l = list(permutations(l, len(l)))

它会输出类似

的内容
[(1, 2, 3, 4, 5),
 (1, 2, 3, 5, 4),
 (1, 2, 4, 3, 5),
 (1, 2, 4, 5, 3),
 (1, 2, 5, 3, 4),
 ...

希望这有帮助!