Python循环实现n的全排列功能

作者:wuhen_n 时间:2022-08-15 21:04:08 

描述:

输入一个大于0的整数n,输出1到n的全排列:

例如:


n=3,输出[[3, 2, 1], [2, 3, 1], [2, 1, 3], [3, 1, 2], [1, 3, 2], [1, 2, 3]]
n=4,输出[[4, 3, 2, 1], [3, 4, 2, 1], [3, 2, 4, 1], [3, 2, 1, 4], [4, 2, 3, 1], [2, 4, 3, 1], [2, 3, 4, 1], [2, 3, 1, 4], [4, 2, 1, 3],
[2, 4, 1, 3], [2, 1, 4, 3], [2, 1, 3, 4], [4, 3, 1, 2], [3, 4, 1, 2], [3, 1, 4, 2], [3, 1, 2, 4], [4, 1, 3, 2], [1, 4, 3, 2],
[1, 3, 4, 2], [1, 3, 2, 4], [4, 1, 2, 3], [1, 4, 2, 3], [1, 2, 4, 3], [1, 2, 3, 4]]

思路:


为1时,结果为1
为2时,结果就是两种:1,2 2,1(1的前后插入)
为3时,结果就是六种:1,2,3 1,3,2 3,2,1 (1,2的前中后插入)
3,2,1 2,3,1 2,1,3 (2,1的前中后插入)

代码:


import copy
def full_arrange(n):
 data = [] # 中间结果
 res = [] # 最终结果
 if n == 1 :
   return 1
 res = [[1]]
 for i in range(2, n+1):
   for j in range(len(res)): # 遍历res数组(二维数组)
     for x in range(len(res[j])+1): # 遍历res数组中的元素(一维数组)
       data = copy.copy(res[j]) # 浅拷贝
       data.insert(x,i) # 在一维数组的不同位置插入元素,获得新的数组
       res.append(data)
       x += 1
     j += 1
   # 删除多余数组(原始数组) 最后保留的数据(一维数组的长度) == i
   while True:
     if len(res[0]) != i:
       res.remove(res[0])
     else:
       break
   i += 1
 return res
print(full_arrange(n))

总结

以上所述是小编给大家介绍的Python循环实现n的全排列功能,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://blog.csdn.net/wuhen_n/article/details/98511553

标签:Python,循环,全排列
0
投稿

猜你喜欢

  • PHP伪静态页面函数附使用方法

    2023-11-22 06:25:42
  • Python将Excel表格按某列拆分为多个sheet实现过程

    2021-06-11 06:59:54
  • Python性能优化技巧

    2021-06-29 12:48:32
  • asp如何用OdbcRegTool组件来创建一个数据源?

    2010-06-12 12:55:00
  • 对python中list的拷贝与numpy的array的拷贝详解

    2023-06-13 02:18:35
  • 十个简单好用的设计技巧[译]

    2009-04-08 12:56:00
  • 解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)

    2023-08-24 00:25:21
  • Sql Server2005对现有数据进行分区具体步骤

    2008-06-26 13:18:00
  • Python单链表原理与实现方法详解

    2023-05-21 00:58:37
  • Python设计模式中的创建型工厂模式

    2023-05-09 17:47:02
  • 解决Pandas生成Excel时的sheet问题的方法总结

    2021-01-13 14:24:44
  • 使用Title提升可访问性二

    2009-11-16 12:53:00
  • Python面向对象之内置函数相关知识总结

    2022-06-05 10:30:24
  • python-序列解包(对可迭代元素的快速取值方法)

    2023-12-28 23:23:57
  • 详解Python中for循环是如何工作的

    2021-07-04 17:41:40
  • 吴恩达机器学习练习:SVM支持向量机

    2023-10-30 11:49:53
  • ASP sql:rs.open语句详细说明

    2008-03-17 11:30:00
  • python selenium 获取标签的属性值、内容、状态方法

    2021-03-12 23:02:46
  • python过滤中英文标点符号的实例代码

    2022-11-09 13:43:09
  • python+flask编写一个简单的登录接口

    2021-06-09 21:19:02
  • asp之家 网络编程 m.aspxhome.com