我試圖找到一種方法來枚舉數字列表的所有組合,而無需遞歸或使用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 –