2015-07-20 42 views
1

下面是我對遞歸版本的嘗試。如何迭代使用堆棧實現解決方案?迭代使用Python獲取排列組合

def get_prems(lst): 
    prems = [] 
    if len(lst) == 0: 
     return prems 
    if len(lst) == 1: 
     prems.append([lst[0]]) 
     return prems 
    for n in lst: 
     lst_without_n = list(lst) 
     lst_without_n.remove(n) 
     for n_prem in get_prems(lst_without_n): 
      n_prem = [n] + n_prem 
      prems.append(n_prem) 

    return prems 

回答

0

您的功能不適用於我。這裏就是我得到:

my1st = [1, 2, 3] 
get_prems(my1st) 
[[1, 2, 3]] 

我會使用itertools模塊裏,而不是:

list(permutations(my1st)) 
[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)] 
+0

你看了這個問題嗎?你真的運行過代碼嗎? – user1264304