python原生代码生成全排列数
""" 皮蛋编程(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环境下测试通过。
相关文章