可能重复:
How to generate all permutations of a list in PythonPython列表排列
我给出一个列表[1,2,3]
和任务是创建这个列表的所有可能的排列。
预期输出:
[[1, 2, 3], [1, 3, 2], [2, 3, 1], [2, 1, 3], [3, 1, 2], [3, 2, 1]]
我也别想从哪里开始。谁能帮忙?
感谢
可能重复:
How to generate all permutations of a list in PythonPython列表排列
我给出一个列表[1,2,3]
和任务是创建这个列表的所有可能的排列。
预期输出:
[[1, 2, 3], [1, 3, 2], [2, 3, 1], [2, 1, 3], [3, 1, 2], [3, 2, 1]]
我也别想从哪里开始。谁能帮忙?
感谢
itertools.permutations这是否适合你。否则,一个简单的方法就是递归地查找排列:您先后选择输出的第一个元素,然后让您的函数查找其余元素的所有排列。
略有不同,但类似的解决方案可在https://stackoverflow.com/a/104436/42973找到。它查找剩余(非第一个)元素的所有排列,然后在所有可能的位置连续插入第一个元素。
这是一个基本的解决方案... 这个想法是使用递归遍历所有的排列并拒绝非有效的排列。
def perm(list_to_perm,perm_l,items,out):
if len(perm_l) == items:
out +=[perm_l]
else:
for i in list_to_perm:
if i not in perm_l:
perm(list_to_perm,perm_l +[i],items,out)
a = [1,2,3]
out = []
perm(a,[],len(a),out)
print out
输出:
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
这是家庭作业,是不是... –
甚至没有与为您完成此功能? –
是这是一个功课 – HussainNagri