如何使用列表理解创建unique列表

2024-10-05 10:53:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了这个代码

def rec_offspring(n,offspring):

    if n == 1:
        return [[sprng] for sprng in offspring]
    else:
        return [[sprng1] for sprng1 in offspring] +\
        [sprng2 for sprng2 in rec_offspring(n-1,offspring)]

如何更改它以返回uniqes列表

例如:

rec_offspring(3,[1,2,3])

应返回:

[[2,3,1],[3,2,1],[1,3,2],[3,1,2],[1,2,3],[2,1,3]

Tags: 代码in列表forreturnifdefelse
1条回答
网友
1楼 · 发布于 2024-10-05 10:53:52

如果需要递归函数,可以使用回溯创建置换:

def permute(a, i, out=None):
    if out is None:
        out = []
    if i == len(a):
        out.append(a)
    else:
        for j in range(i, len(a)):
            a[i], a[j] = a[j], a[i]
            permute(a, i + 1,out)
            a[i], a[j] = a[j], a[i]
    return out
print(permute([1,2,3],0))
[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]

相关问题 更多 >

    热门问题