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


Posted in Python onSeptember 16, 2019

描述:

输入一个大于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的全排列功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python 时间操作例子和时间格式化参数小结
Apr 24 Python
在Python的Django框架上部署ORM库的教程
Apr 20 Python
python中随机函数random用法实例
Apr 30 Python
Python json模块dumps、loads操作示例
Sep 06 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
python模块之subprocess模块级方法的使用
Mar 26 Python
深入浅析Python科学计算库Scipy及安装步骤
Oct 12 Python
Python2与Python3的区别点整理
Dec 12 Python
解决keras加入lambda层时shape的问题
Jun 11 Python
Python requests模块安装及使用教程图解
Jun 30 Python
Django CBV模型源码运行流程详解
Aug 17 Python
python中filter,map,reduce的作用
Jun 10 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 #Python
Python 实现毫秒级淘宝抢购脚本的示例代码
Sep 16 #Python
Python 最强编辑器详细使用指南(PyCharm )
Sep 16 #Python
python 公共方法汇总解析
Sep 16 #Python
python lambda表达式(匿名函数)写法解析
Sep 16 #Python
python 内置函数汇总详解
Sep 16 #Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 #Python
You might like
php file_get_contents函数轻松采集html数据
2010/04/22 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
Symfony查询方法实例小结
2017/06/28 PHP
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
jQuery中get和post方法传值测试及注意事项
2014/08/08 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
基于jQuery Tipso插件实现消息提示框特效
2016/03/16 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
js实现二级导航功能
2017/03/03 Javascript
js实现股票实时刷新数据案例
2017/05/14 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
2018/03/21 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
2018/05/16 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
JS数组reduce()方法原理及使用技巧解析
2020/07/14 Javascript
原生JS实现拖拽效果
2020/12/04 Javascript
在Django中创建动态视图的教程
2015/07/15 Python
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
Django中Forms的使用代码解析
2018/02/10 Python
详解python Todo清单实战
2018/11/01 Python
python实现五子棋小游戏
2020/03/25 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
运动会通讯稿50字
2014/01/30 职场文书
建筑节能汇报材料
2014/08/22 职场文书
先进个人推荐材料
2014/12/29 职场文书
紧急迫降观后感
2015/06/15 职场文书
婚礼家长致辞
2015/07/27 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
python的变量和简单数字类型详解
2021/09/15 Python
深入理解Pytorch微调torchvision模型
2021/11/11 Python