我想编写一个递归函数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
但我知道有些事情是错的......请帮忙吗?
答案 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),
...
希望这有帮助!