python原生代码生成全排列数

2022-05-03 00:00:00 代码 生成 排列
"""
皮蛋编程(https://www.pidancode.com)
创建日期:2022/3/30
功能描述:python原生代码生成全排列数
"""


def a(n):
    li = []
    for i in range(1, n + 1):
        li.append(i)
    return li


def c(i, li_a):
    li = []
    for j in li_a:
        if j != i:
            li.append(j)
    return li


def form(i, li_c, one):
    li = []
    li.append(i)
    count = 0
    for i in one:
        count = count + 1
        li.insert(count, li_c[i - 1])
    return li


def fun(n):
    if n == 2:
        return [[1, 2], [2, 1]]
    else:
        back = []  # 返回集合
        li_a = a(n)
        for i in li_a:  # 依次取li_a中的每一个
            li_c = c(i, li_a)  # 生成li_a中除去i的补集
            for one in fun(n - 1):  # 取下一级的所有排列序
                # li=函数(第一位i,补集li_c,序数列表one)
                li = form(i, li_c, one)
                back.append(li)
        return back


li = fun(3)

count = 1
for i in li:
    print(str(count) + ":" + str(i))
    count = count + 1

输出结果如下:
1:[1, 2, 3]
2:[1, 3, 2]
3:[2, 1, 3]
4:[2, 3, 1]
5:[3, 1, 2]
6:[3, 2, 1]

以上代码在python3.9环境下测试通过。

相关文章