使用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

你的函数不适合我。这是我得到的:

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)]

最新更新