我试图找到一种方法来枚举数字列表的所有组合,而无需递归或使用itertools。我想出了一个可行的解决方案,但我认为它终究变成了递归函数。我是Python新手,不确定如何在没有递归的情况下完成这项工作。使用堆栈列表的排列
任何帮助表示赞赏,因为我认为我仍然没有看到两者之间的区别。
result = []
def permutation(li):
if len(li) == 1:
result.append(li[0])
print (result)
result.pop()
return
for i in range(0,len(li)):
result.append(li[i])
permutation(li[:i] + li[i+1:])
result.pop()
permutation([1,2,3])
似乎是一个功课问题?否则,我不明白为什么你不会使用itertools。 – Lagerbaer
我最初的想法是创建一组生成器(每个生成器都有一个偏移量表示它们何时吐出下一个值),但我不确定这符合问题的精神。这里有一些有趣的想法:http://stackoverflow.com/questions/2710713/algorithm-to-generate-all-possible-permutations-of-a-list –